HyeonJun Jeon

[Modify] Use sql transition

1 -const mysql = require("mysql");
2 const mysql2 = require("mysql2/promise"); 1 const mysql2 = require("mysql2/promise");
3 const fs = require("fs"); 2 const fs = require("fs");
4 -const parseICal = require("./ICal");
5 3
6 const [id, pw] = fs 4 const [id, pw] = fs
7 .readFileSync("server/libs/sql.pvdata", "utf8") 5 .readFileSync("server/libs/sql.pvdata", "utf8")
...@@ -12,60 +10,59 @@ const connectOption = { ...@@ -12,60 +10,59 @@ const connectOption = {
12 password: pw, 10 password: pw,
13 database: "db", 11 database: "db",
14 }; 12 };
13 +const pool = mysql2.createPool(connectOption);
15 14
16 async function jcalToSQL(jcal, userID) { 15 async function jcalToSQL(jcal, userID) {
17 - // const fsql = fs.readFileSync("server/libs/sql.pvdata", "utf8"); 16 + const connection = await pool.getConnection(async (con) => con);
18 - // const [id, pw] = fsql.split("\r\n"); 17 + try {
19 - const connection = await mysql2.createConnection(connectOption); 18 + await connection.beginTransaction();
19 + const commonCols = [
20 + "userID",
21 + "uid",
22 + "label",
23 + "subjectID",
24 + "type",
25 + "description",
26 + "url",
27 + "detail",
28 + ];
29 + const dateScheCols = [...commonCols, "date"];
30 + const timeScheCols = [...commonCols, "date", "startTime", "endTime"];
31 + const dateQueryString =
32 + "INSERT IGNORE INTO schedules_date (" +
33 + dateScheCols.join(",") +
34 + ") VALUES ?";
35 + const timeQueryString =
36 + "INSERT IGNORE INTO schedules_time (" +
37 + timeScheCols.join(",") +
38 + ") VALUES ?";
20 39
21 - await connection.connect(); 40 + const dateSchedules = [];
41 + const timeSchedules = [];
42 + for (const sche of jcal) {
43 + sche.userID = userID;
44 + sche.type = "assignment";
45 + if (sche.scheType === "date")
46 + dateSchedules.push(dateScheCols.map((col) => sche[col]));
47 + else if (sche.scheType === "time")
48 + timeSchedules.push(timeScheCols.map((col) => sche[col]));
49 + else console.log("unexpected scheType", sche);
50 + }
22 51
23 - const commonCols = [ 52 + let [result] = await connection.query(dateQueryString, [dateSchedules]);
24 - "userID", 53 + console.log("ICAL schedules_date | " + result.affectedRows);
25 - "uid", 54 + [result] = await connection.query(timeQueryString, [timeSchedules]);
26 - "label", 55 + console.log("ICAL schedules_time | " + result.affectedRows);
27 - "subjectID", 56 + await connection.commit();
28 - "type", 57 + } catch (e) {
29 - "description", 58 + console.log(e);
30 - "url", 59 + await connection.rollback();
31 - "detail", 60 + } finally {
32 - ]; 61 + connection.release();
33 - const dateScheCols = [...commonCols, "date"];
34 - const timeScheCols = [...commonCols, "date", "startTime", "endTime"];
35 - const dateQueryString =
36 - "INSERT IGNORE INTO schedules_date (" +
37 - dateScheCols.join(",") +
38 - ") VALUES ?";
39 - const timeQueryString =
40 - "INSERT IGNORE INTO schedules_time (" +
41 - timeScheCols.join(",") +
42 - ") VALUES ?";
43 -
44 - const dateSchedules = [];
45 - const timeSchedules = [];
46 - for (const sche of jcal) {
47 - sche.userID = userID;
48 - sche.type = "assignment";
49 - if (sche.scheType === "date")
50 - dateSchedules.push(dateScheCols.map((col) => sche[col]));
51 - else if (sche.scheType === "time")
52 - timeSchedules.push(timeScheCols.map((col) => sche[col]));
53 - else console.log("unexpected scheType", sche);
54 } 62 }
55 -
56 - let [result] = await connection.query(dateQueryString, [dateSchedules]);
57 - console.log("ICAL schedules_date | " + result.affectedRows);
58 - [result] = await connection.query(timeQueryString, [timeSchedules]);
59 - console.log("ICAL schedules_time | " + result.affectedRows);
60 -
61 - connection.end();
62 } 63 }
63 64
64 // iCal의 소유주를 DB에 등록 후 userID get 65 // iCal의 소유주를 DB에 등록 후 userID get
65 // subjectID가 subjects, userID가 users에 있어야함 66 // subjectID가 subjects, userID가 users에 있어야함
66 67
67 -// const fdata = fs.readFileSync("C:/Users/teddy/Downloads/data.ics", "utf8"); 68 +module.exports = { jcalToSQL, connectOption, pool };
68 -// const jcal = parseICal(fdata);
69 -// jcalToSQL(jcal, 1);
70 -
71 -module.exports = { jcalToSQL, connectOption };
......
1 const { default: axios } = require("axios"); 1 const { default: axios } = require("axios");
2 const express = require("express"); 2 const express = require("express");
3 -const mysql2 = require("mysql2/promise");
4 const parseICal = require("../libs/ICal"); 3 const parseICal = require("../libs/ICal");
5 -const { connectOption, jcalToSQL } = require("../libs/MySQL"); 4 +const { pool, jcalToSQL } = require("../libs/MySQL");
6 const dbRouter = express.Router(); 5 const dbRouter = express.Router();
7 6
8 const schedules_dateRouter = require("./Schedules_date"); 7 const schedules_dateRouter = require("./Schedules_date");
...@@ -13,21 +12,25 @@ const userSubjectRouter = require("./User-subject"); ...@@ -13,21 +12,25 @@ const userSubjectRouter = require("./User-subject");
13 const usersRouter = require("./Users"); 12 const usersRouter = require("./Users");
14 13
15 async function route() { 14 async function route() {
16 - const connection = await mysql2.createConnection(connectOption);
17 -
18 // (userID, uid) 15 // (userID, uid)
19 dbRouter.delete("/schedule", async (req, res) => { 16 dbRouter.delete("/schedule", async (req, res) => {
20 console.log("delete /db/schedule"); 17 console.log("delete /db/schedule");
18 + const connection = await pool.getConnection(async (con) => con);
21 try { 19 try {
20 + await connection.beginTransaction();
22 const queryString = ` 21 const queryString = `
23 DELETE FROM \`${req.body.table}\` sc 22 DELETE FROM \`${req.body.table}\` sc
24 WHERE sc.userID = ${req.body.userID} 23 WHERE sc.userID = ${req.body.userID}
25 AND sc.uid = ${req.body.uid}`; 24 AND sc.uid = ${req.body.uid}`;
26 await connection.query(queryString); 25 await connection.query(queryString);
26 + await connection.commit();
27 res.end(); 27 res.end();
28 } catch (e) { 28 } catch (e) {
29 console.log(e); 29 console.log(e);
30 + await connection.rollback();
30 res.end(); 31 res.end();
32 + } finally {
33 + connection.release();
31 } 34 }
32 }); 35 });
33 36
...@@ -41,7 +44,6 @@ async function route() { ...@@ -41,7 +44,6 @@ async function route() {
41 responseType: "blob", 44 responseType: "blob",
42 }); 45 });
43 await jcalToSQL(parseICal(ical), req.body.userID); 46 await jcalToSQL(parseICal(ical), req.body.userID);
44 -
45 res.end(); 47 res.end();
46 } catch (e) { 48 } catch (e) {
47 console.log(e); 49 console.log(e);
......
1 const express = require("express"); 1 const express = require("express");
2 -const mysql2 = require("mysql2/promise"); 2 +const { pool } = require("../libs/MySQL");
3 -const { connectOption } = require("../libs/MySQL");
4 const schedules_dateRouter = express.Router(); 3 const schedules_dateRouter = express.Router();
5 4
6 async function route() { 5 async function route() {
7 - const connection = await mysql2.createConnection(connectOption);
8 -
9 // (userID, date) => schedules 6 // (userID, date) => schedules
10 schedules_dateRouter.get("/", async (req, res) => { 7 schedules_dateRouter.get("/", async (req, res) => {
11 // console.log("/db/schedules_date"); 8 // console.log("/db/schedules_date");
9 + const connection = await pool.getConnection(async (con) => con);
12 try { 10 try {
13 const queryString = ` 11 const queryString = `
14 SELECT sc.label, sc.type, sc.description, sc.url, sc.detail, 12 SELECT sc.label, sc.type, sc.description, sc.url, sc.detail,
...@@ -28,13 +26,17 @@ async function route() { ...@@ -28,13 +26,17 @@ async function route() {
28 } catch (e) { 26 } catch (e) {
29 console.log(e); 27 console.log(e);
30 res.end(); 28 res.end();
29 + } finally {
30 + connection.release();
31 } 31 }
32 }); 32 });
33 33
34 // (userID, label, subjectID, type, description, url, date) 34 // (userID, label, subjectID, type, description, url, date)
35 schedules_dateRouter.post("/", async (req, res) => { 35 schedules_dateRouter.post("/", async (req, res) => {
36 console.log("post /db/schedules_date"); 36 console.log("post /db/schedules_date");
37 + const connection = await pool.getConnection(async (con) => con);
37 try { 38 try {
39 + await connection.beginTransaction();
38 let queryString = ` 40 let queryString = `
39 INSERT INTO \`schedules_date\` 41 INSERT INTO \`schedules_date\`
40 (userID, label, subjectID, type, description, url, date, status) 42 (userID, label, subjectID, type, description, url, date, status)
...@@ -59,10 +61,14 @@ async function route() { ...@@ -59,10 +61,14 @@ async function route() {
59 ON sc.subjectID = sbj.ID 61 ON sc.subjectID = sbj.ID
60 WHERE sc.ID = LAST_INSERT_ID()`; 62 WHERE sc.ID = LAST_INSERT_ID()`;
61 [results] = await connection.query(queryString); 63 [results] = await connection.query(queryString);
64 + await connection.commit();
62 res.send(results[0]); 65 res.send(results[0]);
63 } catch (e) { 66 } catch (e) {
64 console.log(e); 67 console.log(e);
68 + await connection.rollback();
65 res.end(); 69 res.end();
70 + } finally {
71 + connection.release();
66 } 72 }
67 }); 73 });
68 } 74 }
......
1 const express = require("express"); 1 const express = require("express");
2 -const mysql2 = require("mysql2/promise"); 2 +const { pool } = require("../libs/MySQL");
3 -const { connectOption } = require("../libs/MySQL");
4 const schedules_repeatRouter = express.Router(); 3 const schedules_repeatRouter = express.Router();
5 4
6 async function route() { 5 async function route() {
7 - const connection = await mysql2.createConnection(connectOption);
8 -
9 // (userID, day) => schedules 6 // (userID, day) => schedules
10 schedules_repeatRouter.get("/", async (req, res) => { 7 schedules_repeatRouter.get("/", async (req, res) => {
11 // console.log("/db/schedules_repeat"); 8 // console.log("/db/schedules_repeat");
9 + const connection = await pool.getConnection(async (con) => con);
12 try { 10 try {
13 const queryString = ` 11 const queryString = `
14 SELECT sc.label, sc.type, sc.description, sc.uid, sc.url, sc.detail, sbj.name, 12 SELECT sc.label, sc.type, sc.description, sc.uid, sc.url, sc.detail, sbj.name,
...@@ -29,13 +27,17 @@ async function route() { ...@@ -29,13 +27,17 @@ async function route() {
29 } catch (e) { 27 } catch (e) {
30 console.log(e); 28 console.log(e);
31 res.end(); 29 res.end();
30 + } finally {
31 + connection.release();
32 } 32 }
33 }); 33 });
34 34
35 // (userID, label, subjectID, type, desciption, url, status, day, startTime, endTime) 35 // (userID, label, subjectID, type, desciption, url, status, day, startTime, endTime)
36 schedules_repeatRouter.post("/", async (req, res) => { 36 schedules_repeatRouter.post("/", async (req, res) => {
37 console.log("/db/schedules_repeat"); 37 console.log("/db/schedules_repeat");
38 + const connection = await pool.getConnection(async (con) => con);
38 try { 39 try {
40 + await connection.beginTransaction();
39 const queryString = ` 41 const queryString = `
40 INSERT INTO schedules_repeat (userID, label, subjectID, type, status, day, startTime, endTime) 42 INSERT INTO schedules_repeat (userID, label, subjectID, type, status, day, startTime, endTime)
41 VALUE (${req.body.userID}, "${req.body.label}", ${req.body.subjectID}, "${req.body.type}", 43 VALUE (${req.body.userID}, "${req.body.label}", ${req.body.subjectID}, "${req.body.type}",
...@@ -60,10 +62,14 @@ async function route() { ...@@ -60,10 +62,14 @@ async function route() {
60 WHERE sc.ID = LAST_INSERT_ID() 62 WHERE sc.ID = LAST_INSERT_ID()
61 ORDER BY sc.startTime`; 63 ORDER BY sc.startTime`;
62 [results] = await connection.query(queryString); 64 [results] = await connection.query(queryString);
65 + await connection.commit();
63 res.send(results[0]); 66 res.send(results[0]);
64 } catch (e) { 67 } catch (e) {
65 console.log(e); 68 console.log(e);
69 + await connection.rollback();
66 res.end(); 70 res.end();
71 + } finally {
72 + connection.release();
67 } 73 }
68 }); 74 });
69 } 75 }
......
1 const express = require("express"); 1 const express = require("express");
2 -const mysql2 = require("mysql2/promise"); 2 +const { pool } = require("../libs/MySQL");
3 -const { connectOption } = require("../libs/MySQL");
4 const schedules_timeRouter = express.Router(); 3 const schedules_timeRouter = express.Router();
5 4
6 async function route() { 5 async function route() {
7 - const connection = await mysql2.createConnection(connectOption);
8 -
9 // (userID, date) => schedules 6 // (userID, date) => schedules
10 schedules_timeRouter.get("/", async (req, res) => { 7 schedules_timeRouter.get("/", async (req, res) => {
11 // console.log("/db/schedules_time"); 8 // console.log("/db/schedules_time");
9 + const connection = await pool.getConnection(async (con) => con);
12 try { 10 try {
13 const queryString = ` 11 const queryString = `
14 SELECT sc.label, sc.type, sc.description, sc.url, sc.detail, sbj.name, us.nickname, 12 SELECT sc.label, sc.type, sc.description, sc.url, sc.detail, sbj.name, us.nickname,
...@@ -29,13 +27,17 @@ async function route() { ...@@ -29,13 +27,17 @@ async function route() {
29 } catch (e) { 27 } catch (e) {
30 console.log(e); 28 console.log(e);
31 res.end(); 29 res.end();
30 + } finally {
31 + connection.release();
32 } 32 }
33 }); 33 });
34 34
35 // (userID, label, subjectID, type, description, url, date, startTime, endTime) 35 // (userID, label, subjectID, type, description, url, date, startTime, endTime)
36 schedules_timeRouter.post("/", async (req, res) => { 36 schedules_timeRouter.post("/", async (req, res) => {
37 console.log("post /db/schedules_time"); 37 console.log("post /db/schedules_time");
38 + const connection = await pool.getConnection(async (con) => con);
38 try { 39 try {
40 + await connection.beginTransaction();
39 const startTime = req.body.startTime ? `"${req.body.startTime}"` : "null"; 41 const startTime = req.body.startTime ? `"${req.body.startTime}"` : "null";
40 const endTime = req.body.endTime ? `"${req.body.endTime}"` : "null"; 42 const endTime = req.body.endTime ? `"${req.body.endTime}"` : "null";
41 let queryString = ` 43 let queryString = `
...@@ -63,10 +65,14 @@ async function route() { ...@@ -63,10 +65,14 @@ async function route() {
63 WHERE sc.ID = LAST_INSERT_ID() 65 WHERE sc.ID = LAST_INSERT_ID()
64 ORDER BY sc.endTime`; 66 ORDER BY sc.endTime`;
65 [results] = await connection.query(queryString); 67 [results] = await connection.query(queryString);
68 + await connection.commit();
66 res.send(results[0]); 69 res.send(results[0]);
67 } catch (e) { 70 } catch (e) {
68 console.log(e); 71 console.log(e);
72 + await connection.rollback();
69 res.end(); 73 res.end();
74 + } finally {
75 + connection.release();
70 } 76 }
71 }); 77 });
72 } 78 }
......
1 const express = require("express"); 1 const express = require("express");
2 -const mysql2 = require("mysql2/promise"); 2 +const { pool } = require("../libs/MySQL");
3 -const { connectOption } = require("../libs/MySQL");
4 const subjectsRouter = express.Router(); 3 const subjectsRouter = express.Router();
5 4
6 async function route() { 5 async function route() {
7 - const connection = await mysql2.createConnection(connectOption);
8 -
9 // (ID) => null | name //unused 6 // (ID) => null | name //unused
10 subjectsRouter.get("/", async (req, res) => { 7 subjectsRouter.get("/", async (req, res) => {
11 console.log("/db/subjects"); 8 console.log("/db/subjects");
9 + const connection = await pool.getConnection(async (con) => con);
12 try { 10 try {
13 const queryString = ` 11 const queryString = `
14 SELECT name FROM subjects sbj 12 SELECT name FROM subjects sbj
...@@ -18,13 +16,17 @@ async function route() { ...@@ -18,13 +16,17 @@ async function route() {
18 } catch (e) { 16 } catch (e) {
19 console.log(e); 17 console.log(e);
20 res.end(); 18 res.end();
19 + } finally {
20 + connection.release();
21 } 21 }
22 }); 22 });
23 23
24 // [{name, link}, ...] 24 // [{name, link}, ...]
25 subjectsRouter.post("/s", async (req, res) => { 25 subjectsRouter.post("/s", async (req, res) => {
26 console.log("post /db/subjects/s"); 26 console.log("post /db/subjects/s");
27 + const connection = await pool.getConnection(async (con) => con);
27 try { 28 try {
29 + await connection.beginTransaction();
28 const subList = []; 30 const subList = [];
29 for (const s of req.body.list) { 31 for (const s of req.body.list) {
30 const subjectID = s.link.split("courses/")[1]; 32 const subjectID = s.link.split("courses/")[1];
...@@ -35,10 +37,14 @@ async function route() { ...@@ -35,10 +37,14 @@ async function route() {
35 await connection.query(queryString); 37 await connection.query(queryString);
36 subList.push({ name: s.name, subjectID }); 38 subList.push({ name: s.name, subjectID });
37 } 39 }
40 + await connection.commit();
38 res.send(subList); 41 res.send(subList);
39 } catch (e) { 42 } catch (e) {
40 console.log(e); 43 console.log(e);
44 + await connection.rollback();
41 res.end(); 45 res.end();
46 + } finally {
47 + connection.release();
42 } 48 }
43 }); 49 });
44 } 50 }
......
1 const express = require("express"); 1 const express = require("express");
2 -const mysql2 = require("mysql2/promise"); 2 +const { pool } = require("../libs/MySQL");
3 -const { connectOption } = require("../libs/MySQL");
4 const userSubjectRouter = express.Router(); 3 const userSubjectRouter = express.Router();
5 4
6 async function route() { 5 async function route() {
7 - const connection = await mysql2.createConnection(connectOption);
8 -
9 // (userID) => [{userID, subjectID, nickname, status, color, name}, ...] 6 // (userID) => [{userID, subjectID, nickname, status, color, name}, ...]
10 userSubjectRouter.get("/", async (req, res) => { 7 userSubjectRouter.get("/", async (req, res) => {
11 console.log("/db/user-subject"); 8 console.log("/db/user-subject");
9 + const connection = await pool.getConnection(async (con) => con);
12 try { 10 try {
13 const queryString = ` 11 const queryString = `
14 SELECT us.userID, us.subjectID, us.nickname, us.status, us.color, sub.name 12 SELECT us.userID, us.subjectID, us.nickname, us.status, us.color, sub.name
...@@ -21,30 +19,40 @@ async function route() { ...@@ -21,30 +19,40 @@ async function route() {
21 } catch (e) { 19 } catch (e) {
22 console.log(e); 20 console.log(e);
23 res.end(); 21 res.end();
22 + } finally {
23 + connection.release();
24 } 24 }
25 }); 25 });
26 26
27 // (userID, subjectID, status) 27 // (userID, subjectID, status)
28 userSubjectRouter.put("/check", async (req, res) => { 28 userSubjectRouter.put("/check", async (req, res) => {
29 console.log("/db/user-subject/check"); 29 console.log("/db/user-subject/check");
30 + const connection = await pool.getConnection(async (con) => con);
30 try { 31 try {
32 + await connection.beginTransaction();
31 const queryString = ` 33 const queryString = `
32 UPDATE \`user-subject\` 34 UPDATE \`user-subject\`
33 SET status = ${req.body.status} 35 SET status = ${req.body.status}
34 WHERE userID = ${req.body.userID} 36 WHERE userID = ${req.body.userID}
35 AND subjectID = ${req.body.subjectID}`; 37 AND subjectID = ${req.body.subjectID}`;
36 await connection.query(queryString); 38 await connection.query(queryString);
39 + await connection.commit();
37 res.end(); 40 res.end();
38 } catch (e) { 41 } catch (e) {
39 console.log(e); 42 console.log(e);
43 + await connection.rollback();
40 res.end(); 44 res.end();
45 + } finally {
46 + connection.release();
41 } 47 }
42 }); 48 });
43 49
44 // (userID, subjectID, nickname, color) 50 // (userID, subjectID, nickname, color)
45 userSubjectRouter.put("/modify", async (req, res) => { 51 userSubjectRouter.put("/modify", async (req, res) => {
46 console.log("/db/user-subject/modify"); 52 console.log("/db/user-subject/modify");
53 + const connection = await pool.getConnection(async (con) => con);
47 try { 54 try {
55 + await connection.beginTransaction();
48 const queryString = ` 56 const queryString = `
49 UPDATE \`user-subject\` 57 UPDATE \`user-subject\`
50 SET color = '${req.body.color}', 58 SET color = '${req.body.color}',
...@@ -52,16 +60,21 @@ async function route() { ...@@ -52,16 +60,21 @@ async function route() {
52 WHERE userID = ${req.body.userID} 60 WHERE userID = ${req.body.userID}
53 AND subjectID = ${req.body.subjectID}`; 61 AND subjectID = ${req.body.subjectID}`;
54 await connection.query(queryString); 62 await connection.query(queryString);
63 + await connection.commit();
55 res.end(); 64 res.end();
56 } catch (e) { 65 } catch (e) {
57 console.log(e); 66 console.log(e);
67 + await connection.rollback();
58 res.end(); 68 res.end();
69 + } finally {
70 + connection.release();
59 } 71 }
60 }); 72 });
61 73
62 // (userID, [subjectID, ...]) 74 // (userID, [subjectID, ...])
63 userSubjectRouter.post("/s", async (req, res) => { 75 userSubjectRouter.post("/s", async (req, res) => {
64 console.log("post /db/user-subject/s"); 76 console.log("post /db/user-subject/s");
77 + const connection = await pool.getConnection(async (con) => con);
65 const colors = [ 78 const colors = [
66 "3ADF00", 79 "3ADF00",
67 "0040FF", 80 "0040FF",
...@@ -75,6 +88,7 @@ async function route() { ...@@ -75,6 +88,7 @@ async function route() {
75 "2EFEF7", 88 "2EFEF7",
76 ]; 89 ];
77 try { 90 try {
91 + await connection.beginTransaction();
78 for (const i in req.body.subList) { 92 for (const i in req.body.subList) {
79 const queryString = ` 93 const queryString = `
80 INSERT INTO \`user-subject\` 94 INSERT INTO \`user-subject\`
...@@ -82,13 +96,18 @@ async function route() { ...@@ -82,13 +96,18 @@ async function route() {
82 VALUES (${req.body.userID}, ${req.body.subList[i].subjectID}, 1, '${colors[i]}')`; 96 VALUES (${req.body.userID}, ${req.body.subList[i].subjectID}, 1, '${colors[i]}')`;
83 await connection.query(queryString); 97 await connection.query(queryString);
84 } 98 }
99 + await connection.commit();
85 res.end(); 100 res.end();
86 } catch (e) { 101 } catch (e) {
87 console.log(e); 102 console.log(e);
103 + await connection.rollback();
88 res.end(); 104 res.end();
105 + } finally {
106 + connection.release();
89 } 107 }
90 }); 108 });
91 } 109 }
110 +
92 route(); 111 route();
93 112
94 module.exports = userSubjectRouter; 113 module.exports = userSubjectRouter;
......
1 const cryptoJs = require("crypto-js"); 1 const cryptoJs = require("crypto-js");
2 const express = require("express"); 2 const express = require("express");
3 -const mysql2 = require("mysql2/promise"); 3 +const { pool } = require("../libs/MySQL");
4 -const { connectOption } = require("../libs/MySQL");
5 const usersRouter = express.Router(); 4 const usersRouter = express.Router();
6 5
7 async function route() { 6 async function route() {
8 - const connection = await mysql2.createConnection(connectOption);
9 -
10 // (loginID) => null | ID(str) 7 // (loginID) => null | ID(str)
11 usersRouter.get("/", async (req, res) => { 8 usersRouter.get("/", async (req, res) => {
12 console.log("/db/users"); 9 console.log("/db/users");
10 + const connection = await pool.getConnection(async (con) => con);
13 try { 11 try {
14 const queryString = ` 12 const queryString = `
15 SELECT ID FROM users us 13 SELECT ID FROM users us
...@@ -19,12 +17,15 @@ async function route() { ...@@ -19,12 +17,15 @@ async function route() {
19 } catch (e) { 17 } catch (e) {
20 console.log(e); 18 console.log(e);
21 res.end(); 19 res.end();
20 + } finally {
21 + connection.release();
22 } 22 }
23 }); 23 });
24 24
25 // (loginID, loginPW) => null | "correct" 25 // (loginID, loginPW) => null | "correct"
26 usersRouter.get("/check", async (req, res) => { 26 usersRouter.get("/check", async (req, res) => {
27 console.log("/db/users/check"); 27 console.log("/db/users/check");
28 + const connection = await pool.getConnection(async (con) => con);
28 try { 29 try {
29 const queryString = ` 30 const queryString = `
30 SELECT loginPW FROM users us 31 SELECT loginPW FROM users us
...@@ -34,13 +35,17 @@ async function route() { ...@@ -34,13 +35,17 @@ async function route() {
34 } catch (e) { 35 } catch (e) {
35 console.log(e); 36 console.log(e);
36 res.end(); 37 res.end();
38 + } finally {
39 + connection.release();
37 } 40 }
38 }); 41 });
39 42
40 // (loginID, loginPW, name, ical) => ID 43 // (loginID, loginPW, name, ical) => ID
41 usersRouter.post("/", async (req, res) => { 44 usersRouter.post("/", async (req, res) => {
42 console.log("post /db/users/"); 45 console.log("post /db/users/");
46 + const connection = await pool.getConnection(async (con) => con);
43 try { 47 try {
48 + await connection.beginTransaction();
44 const hashpw = cryptoJs.SHA256(req.body.loginPW).toString(); 49 const hashpw = cryptoJs.SHA256(req.body.loginPW).toString();
45 let queryString = ` 50 let queryString = `
46 INSERT INTO users 51 INSERT INTO users
...@@ -50,27 +55,34 @@ async function route() { ...@@ -50,27 +55,34 @@ async function route() {
50 55
51 queryString = `SELECT LAST_INSERT_ID() ID`; 56 queryString = `SELECT LAST_INSERT_ID() ID`;
52 const [results] = await connection.query(queryString); 57 const [results] = await connection.query(queryString);
58 + await connection.commit();
53 res.send(results[0]); 59 res.send(results[0]);
54 } catch (e) { 60 } catch (e) {
55 console.log(e); 61 console.log(e);
62 + await connection.rollback();
56 res.end(); 63 res.end();
64 + } finally {
65 + connection.release();
57 } 66 }
58 }); 67 });
59 68
60 - // (ID) => ical 69 + // (ID) => ical
61 - usersRouter.get("/ical", async (req, res) => { 70 + usersRouter.get("/ical", async (req, res) => {
62 - console.log("/db/users/ical"); 71 + console.log("/db/users/ical");
63 - try { 72 + const connection = await pool.getConnection(async (con) => con);
64 - const queryString = ` 73 + try {
74 + const queryString = `
65 SELECT ical FROM users us 75 SELECT ical FROM users us
66 WHERE us.ID = '${req.query.ID}'`; 76 WHERE us.ID = '${req.query.ID}'`;
67 - const [results] = await connection.query(queryString); 77 + const [results] = await connection.query(queryString);
68 - res.send(results[0]); 78 + res.send(results[0]);
69 - } catch (e) { 79 + } catch (e) {
70 - console.log(e); 80 + console.log(e);
71 - res.end(); 81 + res.end();
72 - } 82 + } finally {
73 - }); 83 + connection.release();
84 + }
85 + });
74 } 86 }
75 route(); 87 route();
76 88
......