DB.js 1.78 KB
const { default: axios } = require("axios");
const express = require("express");
const mysql2 = require("mysql2/promise");
const parseICal = require("../libs/ICal");
const { connectOption, jcalToSQL } = require("../libs/MySQL");
const dbRouter = express.Router();

const schedules_dateRouter = require("./Schedules_date");
const schedules_repeatRouter = require("./Schedules_repeat");
const schedules_timeRouter = require("./Schedules_time");
const subjectsRouter = require("./Subjects");
const userSubjectRouter = require("./User-subject");
const usersRouter = require("./Users");

async function route() {
  const connection = await mysql2.createConnection(connectOption);

  // (userID, uid)
  dbRouter.delete("/schedule", async (req, res) => {
    console.log("delete /db/schedule");
    try {
      const queryString = `
      DELETE FROM \`${req.body.table}\` sc
      WHERE sc.userID = ${req.body.userID}
        AND sc.uid = ${req.body.uid}`;
      await connection.query(queryString);
      res.end();
    } catch (e) {
      console.log(e);
      res.end();
    }
  });

  // (userID, peed)
  dbRouter.put("/ical", async (req, res) => {
    console.log("put /db/ical");
    try {
      const { data: ical } = await axios({
        url: req.body.peed,
        method: "GET",
        responseType: "blob",
      });
      await jcalToSQL(parseICal(ical), req.body.userID);

      res.end();
    } catch (e) {
      console.log(e);
      res.end();
    }
  });

  dbRouter.use("/user-subject", userSubjectRouter);
  dbRouter.use("/users", usersRouter);
  dbRouter.use("/subjects", subjectsRouter);
  dbRouter.use("/schedules_date", schedules_dateRouter);
  dbRouter.use("/schedules_time", schedules_timeRouter);
  dbRouter.use("/schedules_repeat", schedules_repeatRouter);
}

route();

module.exports = dbRouter;