Showing
15 changed files
with
110 additions
and
68 deletions
jsconfig.json
0 → 100644
... | @@ -7,7 +7,7 @@ const [id, pw] = fs | ... | @@ -7,7 +7,7 @@ const [id, pw] = fs |
7 | .readFileSync("server/libs/sql.pvdata", "utf8") | 7 | .readFileSync("server/libs/sql.pvdata", "utf8") |
8 | .split("\r\n"); | 8 | .split("\r\n"); |
9 | const connectOption = { | 9 | const connectOption = { |
10 | - host: "localhost", | 10 | + host: "extended-calendar-db.cihyg6ssq3la.ap-northeast-2.rds.amazonaws.com", |
11 | user: id, | 11 | user: id, |
12 | password: pw, | 12 | password: pw, |
13 | database: "db", | 13 | database: "db", |
... | @@ -53,11 +53,10 @@ async function jcalToSQL(jcal, userID) { | ... | @@ -53,11 +53,10 @@ async function jcalToSQL(jcal, userID) { |
53 | else console.log("unexpected scheType", sche); | 53 | else console.log("unexpected scheType", sche); |
54 | } | 54 | } |
55 | 55 | ||
56 | - let result = await connection.query(dateQueryString, [dateSchedules]); | 56 | + let [result] = await connection.query(dateQueryString, [dateSchedules]); |
57 | - console.log(`schedules_date | ${result}`); | 57 | + console.log("ICAL schedules_date | " + result.affectedRows); |
58 | - | 58 | + [result] = await connection.query(timeQueryString, [timeSchedules]); |
59 | - result = await connection.query(timeQueryString, [timeSchedules]); | 59 | + console.log("ICAL schedules_time | " + result.affectedRows); |
60 | - console.log(`schedules_time | ${result}`); | ||
61 | 60 | ||
62 | connection.end(); | 61 | connection.end(); |
63 | } | 62 | } | ... | ... |
... | @@ -6,12 +6,10 @@ const { login } = require("./E_Campus.js"); | ... | @@ -6,12 +6,10 @@ const { login } = require("./E_Campus.js"); |
6 | const parseICal = require("./ICal.js"); | 6 | const parseICal = require("./ICal.js"); |
7 | 7 | ||
8 | async function runrun() { | 8 | async function runrun() { |
9 | - const { data: ical } = await axios({ | 9 | + |
10 | - url: "https://khcanvas.khu.ac.kr/feeds/calendars/user_YzxoryVh1hAQTeUJRljeaYavgmw1OXEGKIzNVpnI.ics", | 10 | + const mdata = await axios.get("http://localhost:3001/db/users", {params:{loginID:"good1588"}} |
11 | - method: "GET", | 11 | + |
12 | - responseType: "blob", | 12 | + ) |
13 | - }); | 13 | + console.log(mdata.data) |
14 | - const Jcal = parseICal(ical); | ||
15 | - console.log(Jcal); | ||
16 | } | 14 | } |
17 | runrun(); | 15 | runrun(); | ... | ... |
1 | +const { default: axios } = require("axios"); | ||
1 | const express = require("express"); | 2 | const express = require("express"); |
2 | const mysql2 = require("mysql2/promise"); | 3 | const mysql2 = require("mysql2/promise"); |
3 | -const { connectOption } = require("../libs/MySQL"); | 4 | +const parseICal = require("../libs/ICal"); |
5 | +const { connectOption, jcalToSQL } = require("../libs/MySQL"); | ||
4 | const dbRouter = express.Router(); | 6 | const dbRouter = express.Router(); |
5 | 7 | ||
6 | -const schedules_dateRouter = require("./schedules_date"); | 8 | +const schedules_dateRouter = require("./Schedules_date"); |
7 | const schedules_repeatRouter = require("./Schedules_repeat"); | 9 | const schedules_repeatRouter = require("./Schedules_repeat"); |
8 | const schedules_timeRouter = require("./Schedules_time"); | 10 | const schedules_timeRouter = require("./Schedules_time"); |
9 | const subjectsRouter = require("./Subjects"); | 11 | const subjectsRouter = require("./Subjects"); |
10 | -const userSubjectRouter = require("./user-subject"); | 12 | +const userSubjectRouter = require("./User-subject"); |
11 | const usersRouter = require("./Users"); | 13 | const usersRouter = require("./Users"); |
12 | 14 | ||
13 | async function route() { | 15 | async function route() { |
... | @@ -29,6 +31,24 @@ async function route() { | ... | @@ -29,6 +31,24 @@ async function route() { |
29 | } | 31 | } |
30 | }); | 32 | }); |
31 | 33 | ||
34 | + // (userID, peed) | ||
35 | + dbRouter.put("/ical", async (req, res) => { | ||
36 | + console.log("put /db/ical"); | ||
37 | + try { | ||
38 | + const { data: ical } = await axios({ | ||
39 | + url: req.body.peed, | ||
40 | + method: "GET", | ||
41 | + responseType: "blob", | ||
42 | + }); | ||
43 | + await jcalToSQL(parseICal(ical), req.body.userID); | ||
44 | + | ||
45 | + res.end(); | ||
46 | + } catch (e) { | ||
47 | + console.log(e); | ||
48 | + res.end(); | ||
49 | + } | ||
50 | + }); | ||
51 | + | ||
32 | dbRouter.use("/user-subject", userSubjectRouter); | 52 | dbRouter.use("/user-subject", userSubjectRouter); |
33 | dbRouter.use("/users", usersRouter); | 53 | dbRouter.use("/users", usersRouter); |
34 | dbRouter.use("/subjects", subjectsRouter); | 54 | dbRouter.use("/subjects", subjectsRouter); | ... | ... |
... | @@ -14,19 +14,19 @@ router.post("/", async (req, res) => { | ... | @@ -14,19 +14,19 @@ router.post("/", async (req, res) => { |
14 | try { | 14 | try { |
15 | const { peed, subjects } = result; | 15 | const { peed, subjects } = result; |
16 | 16 | ||
17 | - const resUser = await axios.post("http://localhost:3001/db/users", { | 17 | + const resUser = await axios.post("http://3.34.173.161:3001/db/users", { |
18 | loginID: req.body.id, | 18 | loginID: req.body.id, |
19 | loginPW: req.body.pw, | 19 | loginPW: req.body.pw, |
20 | ical: peed, | 20 | ical: peed, |
21 | }); | 21 | }); |
22 | const userID = resUser.data.ID; | 22 | const userID = resUser.data.ID; |
23 | const { data: subList } = await axios.post( | 23 | const { data: subList } = await axios.post( |
24 | - "http://localhost:3001/db/subjects/s", | 24 | + "http://3.34.173.161:3001/db/subjects/s", |
25 | { | 25 | { |
26 | list: subjects, | 26 | list: subjects, |
27 | } | 27 | } |
28 | ); | 28 | ); |
29 | - await axios.post("http://localhost:3001/db/user-subject/s", { | 29 | + await axios.post("http://3.34.173.161:3001/db/user-subject/s", { |
30 | userID, | 30 | userID, |
31 | subList, | 31 | subList, |
32 | }); | 32 | }); | ... | ... |
... | @@ -56,6 +56,21 @@ async function route() { | ... | @@ -56,6 +56,21 @@ async function route() { |
56 | res.end(); | 56 | res.end(); |
57 | } | 57 | } |
58 | }); | 58 | }); |
59 | + | ||
60 | + // (ID) => ical | ||
61 | + usersRouter.get("/ical", async (req, res) => { | ||
62 | + console.log("/db/users/ical"); | ||
63 | + try { | ||
64 | + const queryString = ` | ||
65 | + SELECT ical FROM users us | ||
66 | + WHERE us.ID = '${req.query.ID}'`; | ||
67 | + const [results] = await connection.query(queryString); | ||
68 | + res.send(results[0]); | ||
69 | + } catch (e) { | ||
70 | + console.log(e); | ||
71 | + res.end(); | ||
72 | + } | ||
73 | + }); | ||
59 | } | 74 | } |
60 | route(); | 75 | route(); |
61 | 76 | ... | ... |
server/schema.sql
deleted
100644 → 0
This diff is collapsed. Click to expand it.
... | @@ -4,24 +4,19 @@ const cors = require("cors"); | ... | @@ -4,24 +4,19 @@ const cors = require("cors"); |
4 | 4 | ||
5 | const loginRouter = require("./routers/Login"); | 5 | const loginRouter = require("./routers/Login"); |
6 | const dbRouter = require("./routers/DB"); | 6 | const dbRouter = require("./routers/DB"); |
7 | +const path = require("path"); | ||
7 | 8 | ||
8 | const app = express(); | 9 | const app = express(); |
9 | 10 | ||
10 | app.use( | 11 | app.use( |
11 | cors({ | 12 | cors({ |
12 | - origin: "http://localhost:3000", | 13 | + origin: "http://3.34.173.161:3000", |
13 | credentials: true, | 14 | credentials: true, |
14 | }) | 15 | }) |
15 | ); | 16 | ); |
16 | -// app.use(bodyParser.urlencoded({ extended: false })); | ||
17 | -// app.use(bodyParser.json()); | ||
18 | app.use(express.json()); | 17 | app.use(express.json()); |
19 | app.use(express.urlencoded({ extended: true })); | 18 | app.use(express.urlencoded({ extended: true })); |
20 | 19 | ||
21 | -app.post("/", (req, res) => { | ||
22 | - console.log("/"); | ||
23 | -}); | ||
24 | - | ||
25 | app.use("/login", loginRouter); | 20 | app.use("/login", loginRouter); |
26 | app.use("/db", dbRouter); | 21 | app.use("/db", dbRouter); |
27 | 22 | ||
... | @@ -43,6 +38,11 @@ app.use("/db", dbRouter); | ... | @@ -43,6 +38,11 @@ app.use("/db", dbRouter); |
43 | // } else console.log("Incorrect user ID or password."); | 38 | // } else console.log("Incorrect user ID or password."); |
44 | // }); | 39 | // }); |
45 | 40 | ||
41 | +// app.use(express.static(path.join(__dirname, '../build'))); | ||
42 | +// app.get('*', function (요청, 응답) { | ||
43 | +// 응답.sendFile(path.join(__dirname, '../build/index.html')); | ||
44 | +// }); | ||
45 | + | ||
46 | app.listen(3001, function () { | 46 | app.listen(3001, function () { |
47 | console.log("listening on 3001"); | 47 | console.log("listening on 3001"); |
48 | }); | 48 | }); | ... | ... |
... | @@ -30,15 +30,15 @@ const GridItem = ({ targetDate }) => { | ... | @@ -30,15 +30,15 @@ const GridItem = ({ targetDate }) => { |
30 | day: targetDate.getDay(), | 30 | day: targetDate.getDay(), |
31 | }; | 31 | }; |
32 | const { data: scdate } = await axios.get( | 32 | const { data: scdate } = await axios.get( |
33 | - "http://localhost:3001/db/schedules_date", | 33 | + "http://3.34.173.161:3001/db/schedules_date", |
34 | { params } | 34 | { params } |
35 | ); | 35 | ); |
36 | const { data: sctime } = await axios.get( | 36 | const { data: sctime } = await axios.get( |
37 | - "http://localhost:3001/db/schedules_time", | 37 | + "http://3.34.173.161:3001/db/schedules_time", |
38 | { params } | 38 | { params } |
39 | ); | 39 | ); |
40 | const { data: scrpeat } = await axios.get( | 40 | const { data: scrpeat } = await axios.get( |
41 | - "http://localhost:3001/db/schedules_repeat", | 41 | + "http://3.34.173.161:3001/db/schedules_repeat", |
42 | { params } | 42 | { params } |
43 | ); | 43 | ); |
44 | const subs = await localforage.getItem("subjects"); | 44 | const subs = await localforage.getItem("subjects"); |
... | @@ -58,7 +58,7 @@ const GridItem = ({ targetDate }) => { | ... | @@ -58,7 +58,7 @@ const GridItem = ({ targetDate }) => { |
58 | const finishSchedule = async (table, uid) => { | 58 | const finishSchedule = async (table, uid) => { |
59 | for (const i in schedules) | 59 | for (const i in schedules) |
60 | if (schedules[i].uid === uid) { | 60 | if (schedules[i].uid === uid) { |
61 | - await axios.delete("http://localhost:3001/db/schedule", { | 61 | + await axios.delete("http://3.34.173.161:3001/db/schedule", { |
62 | data: { | 62 | data: { |
63 | table, | 63 | table, |
64 | uid, | 64 | uid, |
... | @@ -81,7 +81,7 @@ const GridItem = ({ targetDate }) => { | ... | @@ -81,7 +81,7 @@ const GridItem = ({ targetDate }) => { |
81 | const table = | 81 | const table = |
82 | state.startTime || state.endTime ? "schedules_time" : "schedules_date"; | 82 | state.startTime || state.endTime ? "schedules_time" : "schedules_date"; |
83 | const { data: sche } = await axios.post( | 83 | const { data: sche } = await axios.post( |
84 | - "http://localhost:3001/db/" + table, | 84 | + "http://3.34.173.161:3001/db/" + table, |
85 | { | 85 | { |
86 | userID: await localforage.getItem("userID"), | 86 | userID: await localforage.getItem("userID"), |
87 | ...state, | 87 | ...state, | ... | ... |
... | @@ -16,7 +16,7 @@ const render = (subsObj, args) => { | ... | @@ -16,7 +16,7 @@ const render = (subsObj, args) => { |
16 | case "CHECKED": | 16 | case "CHECKED": |
17 | sub = subsObj[args.subjectID]; | 17 | sub = subsObj[args.subjectID]; |
18 | sub.status = !sub.status; | 18 | sub.status = !sub.status; |
19 | - axios.put("http://localhost:3001/db/user-subject/check", { | 19 | + axios.put("http://3.34.173.161:3001/db/user-subject/check", { |
20 | userID: sub.userID, | 20 | userID: sub.userID, |
21 | subjectID: args.subjectID, | 21 | subjectID: args.subjectID, |
22 | status: +sub.status, | 22 | status: +sub.status, |
... | @@ -26,7 +26,7 @@ const render = (subsObj, args) => { | ... | @@ -26,7 +26,7 @@ const render = (subsObj, args) => { |
26 | sub = subsObj[args.subjectID]; | 26 | sub = subsObj[args.subjectID]; |
27 | sub.nickname = args.nickname; | 27 | sub.nickname = args.nickname; |
28 | sub.color = args.color; | 28 | sub.color = args.color; |
29 | - axios.put("http://localhost:3001/db/user-subject/modify", { | 29 | + axios.put("http://3.34.173.161:3001/db/user-subject/modify", { |
30 | userID: sub.userID, | 30 | userID: sub.userID, |
31 | subjectID: args.subjectID, | 31 | subjectID: args.subjectID, |
32 | nickname: sub.nickname, | 32 | nickname: sub.nickname, |
... | @@ -41,7 +41,7 @@ const render = (subsObj, args) => { | ... | @@ -41,7 +41,7 @@ const render = (subsObj, args) => { |
41 | }; | 41 | }; |
42 | 42 | ||
43 | const Calendar = () => { | 43 | const Calendar = () => { |
44 | - console.log("visit Calendar"); | 44 | + // console.log("visit Calendar"); |
45 | 45 | ||
46 | const [state, setState] = useState({ | 46 | const [state, setState] = useState({ |
47 | scope: "month", | 47 | scope: "month", |
... | @@ -56,7 +56,7 @@ const Calendar = () => { | ... | @@ -56,7 +56,7 @@ const Calendar = () => { |
56 | // get user's subjects | 56 | // get user's subjects |
57 | const userID = await localforage.getItem("userID"); | 57 | const userID = await localforage.getItem("userID"); |
58 | const { data: subjects } = await axios.get( | 58 | const { data: subjects } = await axios.get( |
59 | - "http://localhost:3001/db/user-subject", | 59 | + "http://3.34.173.161:3001/db/user-subject", |
60 | { params: { userID } } | 60 | { params: { userID } } |
61 | ); | 61 | ); |
62 | await localforage.setItem("subjects", subjects); | 62 | await localforage.setItem("subjects", subjects); | ... | ... |
... | @@ -6,7 +6,7 @@ import { useNavigate } from "react-router-dom"; | ... | @@ -6,7 +6,7 @@ import { useNavigate } from "react-router-dom"; |
6 | import "../styles/Debug.css"; | 6 | import "../styles/Debug.css"; |
7 | 7 | ||
8 | const Debug = () => { | 8 | const Debug = () => { |
9 | - console.log("visit Debug"); | 9 | + // console.log("visit Debug"); |
10 | 10 | ||
11 | const [state, setState] = useState({ | 11 | const [state, setState] = useState({ |
12 | type: "login", | 12 | type: "login", |
... | @@ -23,25 +23,25 @@ const Debug = () => { | ... | @@ -23,25 +23,25 @@ const Debug = () => { |
23 | }; | 23 | }; |
24 | 24 | ||
25 | const handleSubmit = async (e) => { | 25 | const handleSubmit = async (e) => { |
26 | - let result; | 26 | + // let result; |
27 | - switch (state.type) { | 27 | + // switch (state.type) { |
28 | - case "login": | 28 | + // case "login": |
29 | - //result = login(state.input1, state.input2); | 29 | + // //result = login(state.input1, state.input2); |
30 | - break; | 30 | + // break; |
31 | - case "server": | 31 | + // case "server": |
32 | - setState({ ...state, output: "loading..." }); | 32 | + // setState({ ...state, output: "loading..." }); |
33 | - axios | 33 | + // axios |
34 | - .post("http://localhost:3001/login/", { | 34 | + // .post("http://3.34.173.161:3001/login/", { |
35 | - id: state.input1, | 35 | + // id: state.input1, |
36 | - pw: state.input2, | 36 | + // pw: state.input2, |
37 | - }) | 37 | + // }) |
38 | - .then((res) => { | 38 | + // .then((res) => { |
39 | - setState({ ...state, output: res.data }); | 39 | + // setState({ ...state, output: res.data }); |
40 | - }); | 40 | + // }); |
41 | - return; | 41 | + // return; |
42 | - default: | 42 | + // default: |
43 | - } | 43 | + // } |
44 | - setState({ ...state, output: result }); | 44 | + // setState({ ...state, output: result }); |
45 | }; | 45 | }; |
46 | 46 | ||
47 | const navigate = useNavigate(); | 47 | const navigate = useNavigate(); | ... | ... |
... | @@ -3,7 +3,7 @@ import { useEffect } from "react"; | ... | @@ -3,7 +3,7 @@ import { useEffect } from "react"; |
3 | import { useNavigate } from "react-router-dom"; | 3 | import { useNavigate } from "react-router-dom"; |
4 | 4 | ||
5 | const Home = () => { | 5 | const Home = () => { |
6 | - console.log("visit Home"); | 6 | + // console.log("visit Home"); |
7 | 7 | ||
8 | const navigate = useNavigate(); | 8 | const navigate = useNavigate(); |
9 | useEffect(() => { | 9 | useEffect(() => { | ... | ... |
... | @@ -7,7 +7,7 @@ import axios from "axios"; | ... | @@ -7,7 +7,7 @@ import axios from "axios"; |
7 | import cryptoJs from "crypto-js"; | 7 | import cryptoJs from "crypto-js"; |
8 | 8 | ||
9 | const Login = () => { | 9 | const Login = () => { |
10 | - console.log("visit Login"); | 10 | + // console.log("visit Login"); |
11 | const [state, setState] = useState({ | 11 | const [state, setState] = useState({ |
12 | id: "", | 12 | id: "", |
13 | pw: "", | 13 | pw: "", |
... | @@ -25,19 +25,23 @@ const Login = () => { | ... | @@ -25,19 +25,23 @@ const Login = () => { |
25 | const login = async () => { | 25 | const login = async () => { |
26 | setState({ ...state, btn: "Login..." }); | 26 | setState({ ...state, btn: "Login..." }); |
27 | const { data: userDBID } = await axios.get( | 27 | const { data: userDBID } = await axios.get( |
28 | - "http://localhost:3001/db/users", | 28 | + "http://3.34.173.161:3001/db/users", |
29 | - { | 29 | + { params: { loginID: state.id } } |
30 | - params: { | ||
31 | - loginID: state.id, | ||
32 | - }, | ||
33 | - } | ||
34 | ); | 30 | ); |
35 | - | ||
36 | if (userDBID) { | 31 | if (userDBID) { |
37 | - //pass crawling | 32 | + //pass crawling, just ical |
33 | + const { data: peed } = await axios.get( | ||
34 | + "http://3.34.173.161:3001/db/users/ical", | ||
35 | + { params: { ID: userDBID } } | ||
36 | + ); | ||
37 | + await axios.put("http://3.34.173.161:3001/db/ical", { | ||
38 | + userID: userDBID, | ||
39 | + peed: peed.ical, | ||
40 | + }); | ||
41 | + | ||
38 | const hashpw = cryptoJs.SHA256(state.pw).toString(); | 42 | const hashpw = cryptoJs.SHA256(state.pw).toString(); |
39 | const { data: isCorrectPW } = await axios.get( | 43 | const { data: isCorrectPW } = await axios.get( |
40 | - "http://localhost:3001/db/users/check", | 44 | + "http://3.34.173.161:3001/db/users/check", |
41 | { | 45 | { |
42 | params: { loginID: state.id, loginPW: hashpw }, | 46 | params: { loginID: state.id, loginPW: hashpw }, |
43 | } | 47 | } |
... | @@ -53,7 +57,7 @@ const Login = () => { | ... | @@ -53,7 +57,7 @@ const Login = () => { |
53 | } else { | 57 | } else { |
54 | //crawling | 58 | //crawling |
55 | const { data: loginResult } = await axios.post( | 59 | const { data: loginResult } = await axios.post( |
56 | - "http://localhost:3001/login/", | 60 | + "http://3.34.173.161:3001/login/", |
57 | { | 61 | { |
58 | id: state.id, | 62 | id: state.id, |
59 | pw: state.pw, | 63 | pw: state.pw, | ... | ... |
... | @@ -4,7 +4,7 @@ import { Navigate, useNavigate } from "react-router-dom"; | ... | @@ -4,7 +4,7 @@ import { Navigate, useNavigate } from "react-router-dom"; |
4 | import "../styles/Settings.css"; | 4 | import "../styles/Settings.css"; |
5 | 5 | ||
6 | const Settings = () => { | 6 | const Settings = () => { |
7 | - console.log("visit Settings"); | 7 | + // console.log("visit Settings"); |
8 | 8 | ||
9 | const session = localforage.getItem("session"); | 9 | const session = localforage.getItem("session"); |
10 | 10 | ... | ... |
-
Please register or login to post a comment