Showing
8 changed files
with
144 additions
and
90 deletions
| 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 | ... | ... |
-
Please register or login to post a comment