Showing
5 changed files
with
69 additions
and
22 deletions
1 | /* eslint-disable no-console */ | 1 | /* eslint-disable no-console */ |
2 | import routes from "../routes"; | 2 | import routes from "../routes"; |
3 | import File from "../models/File"; | 3 | import File from "../models/File"; |
4 | -import performance from "perf_hooks"; | 4 | +const createCsvWriter = require('csv-writer').createObjectCsvWriter; |
5 | - | 5 | +const csvInsertWriter = createCsvWriter({ |
6 | + path: 'insertOutput.csv', | ||
7 | + header: [ | ||
8 | + {id: 'ms', title: 'time'} | ||
9 | + ] | ||
10 | +}); | ||
11 | +const csvSelectWriter = createCsvWriter({ | ||
12 | + path: 'selectOutput.csv', | ||
13 | + header: [ | ||
14 | + {id: 'ms', title: 'time'} | ||
15 | + ] | ||
16 | +}); | ||
6 | export const home = async (req, res) => { | 17 | export const home = async (req, res) => { |
7 | try { | 18 | try { |
8 | - const files = await File.find({}).sort({ _id: -1 }); // 모든 비디오를 가져온다. | 19 | + const files = await File.find({}).sort({ _id: -1 }); // 모든 파일을 가져온다. |
9 | - res.render("home", { pageTitle: "Home", files }); // render DB에 저장된 video의 내용을 보여준다 | 20 | + res.render("home", { pageTitle: "Home", files }); // render DB에 저장된 file의 내용을 보여준다 |
10 | } catch (error) { | 21 | } catch (error) { |
11 | console.log(error); | 22 | console.log(error); |
12 | res.render("home", { pageTitle: "Home", files: [] }); | 23 | res.render("home", { pageTitle: "Home", files: [] }); |
13 | } | 24 | } |
14 | }; | 25 | }; |
15 | - | 26 | +const searchTime = new Array(); |
16 | export const search = async (req, res) => { | 27 | export const search = async (req, res) => { |
17 | - console.time("SearchFunction"); | 28 | + const startTime = new Date().getTime(); |
18 | const { | 29 | const { |
19 | query: { term: searchingBy }, | 30 | query: { term: searchingBy }, |
20 | } = req; // == const searchingBy = req.query.term; | 31 | } = req; // == const searchingBy = req.query.term; |
... | @@ -23,7 +34,13 @@ export const search = async (req, res) => { | ... | @@ -23,7 +34,13 @@ export const search = async (req, res) => { |
23 | files = await File.find({ | 34 | files = await File.find({ |
24 | title: { $regex: searchingBy, $options: "i" }, // i를 옵션으로 추가하면 insensitive.. 대소문자 구분 안함. | 35 | title: { $regex: searchingBy, $options: "i" }, // i를 옵션으로 추가하면 insensitive.. 대소문자 구분 안함. |
25 | }); | 36 | }); |
26 | - console.timeEnd("SearchFunction"); | 37 | + const endTime = new Date().getTime(); // SELECT의 경우 파일 시간 측정 |
38 | + searchTime.push({ms: endTime - startTime}); | ||
39 | + if (searchTime.length === 3){ | ||
40 | + csvSelectWriter | ||
41 | + .writeRecords(searchTime) | ||
42 | + .then(() => console.log("The CSV file was written successfully~")); | ||
43 | + } | ||
27 | } catch (error) { | 44 | } catch (error) { |
28 | console.log(error); | 45 | console.log(error); |
29 | } | 46 | } |
... | @@ -35,14 +52,14 @@ export const search = async (req, res) => { | ... | @@ -35,14 +52,14 @@ export const search = async (req, res) => { |
35 | export const getUpload = (req, res) => | 52 | export const getUpload = (req, res) => |
36 | res.render("upload", { pageTitle: "Upload" }); | 53 | res.render("upload", { pageTitle: "Upload" }); |
37 | 54 | ||
55 | +const insertTime = new Array(); | ||
38 | export const postUpload = async (req, res) => { | 56 | export const postUpload = async (req, res) => { |
39 | - // const {} 를 통해 body를 받아와 요청하는 정보들을 확인한다. | 57 | + const startTime = new Date().getTime(); |
40 | - // 이는 pug와 db.js를 확인해야하는 듯 하다. | 58 | + // multer를 해야 파일이 넘어가는 것이 나타난다. |
41 | - console.time("UploadFunction"); | ||
42 | const { | 59 | const { |
43 | body: { title }, | 60 | body: { title }, |
44 | - file: { path }, // path로 할때는 로컬의 경로. S3는 location | 61 | + file: { path }, |
45 | - } = req; // file에 path라는 요소가 있다. | 62 | + } = req; |
46 | 63 | ||
47 | const newFile = await File.create({ | 64 | const newFile = await File.create({ |
48 | fileUrl: path, | 65 | fileUrl: path, |
... | @@ -50,7 +67,13 @@ export const postUpload = async (req, res) => { | ... | @@ -50,7 +67,13 @@ export const postUpload = async (req, res) => { |
50 | // 여기있는 fileUrl, title은 fileDB의 속성이다. | 67 | // 여기있는 fileUrl, title은 fileDB의 속성이다. |
51 | }); | 68 | }); |
52 | console.log(newFile); | 69 | console.log(newFile); |
53 | - console.timeEnd("UploadFunction"); | 70 | + const endTime = new Date().getTime(); // INSERT의 경우 파일 시간 측정 |
71 | + insertTime.push({ms: endTime - startTime}); | ||
72 | + if (insertTime.length === 3){ | ||
73 | + csvInsertWriter | ||
74 | + .writeRecords(insertTime) | ||
75 | + .then(() => console.log("The CSV file was written successfully~")); | ||
76 | + } | ||
54 | res.redirect(routes.home); | 77 | res.redirect(routes.home); |
55 | }; | 78 | }; |
56 | 79 | ||
... | @@ -74,7 +97,7 @@ export const deleteFile = async (req, res) => { | ... | @@ -74,7 +97,7 @@ export const deleteFile = async (req, res) => { |
74 | } = req; | 97 | } = req; |
75 | try { | 98 | try { |
76 | const file = await File.findById(id); | 99 | const file = await File.findById(id); |
77 | - // video를 받아서 render로 통해 템플릿으로 던져준다, | 100 | + // file을 받아서 render로 통해 템플릿으로 던져준다, |
78 | if (String(file.creator) !== req.user.id) { | 101 | if (String(file.creator) !== req.user.id) { |
79 | throw Error(); | 102 | throw Error(); |
80 | } else { | 103 | } else { | ... | ... |
1 | import dotenv from "dotenv"; | 1 | import dotenv from "dotenv"; |
2 | import multer from "multer"; | 2 | import multer from "multer"; |
3 | -import multerS3 from "multer-s3"; | ||
4 | -import aws from "aws-sdk"; | ||
5 | import routes from "./routes"; | 3 | import routes from "./routes"; |
6 | 4 | ||
7 | dotenv.config(); | 5 | dotenv.config(); |
8 | 6 | ||
9 | -const s3 = new aws.S3({ | ||
10 | - accessKeyId: process.env.AWS_KEY, | ||
11 | - secretAccessKey: process.env.AWS_PRIVATEE_KEY, | ||
12 | - region: "ap-northeast-2", | ||
13 | -}); | ||
14 | - | ||
15 | const multerFile = multer({ dest: "uploads/files/" }); | 7 | const multerFile = multer({ dest: "uploads/files/" }); |
16 | 8 | ||
17 | export const localsMiddleware = (req, res, next) => { | 9 | export const localsMiddleware = (req, res, next) => { | ... | ... |
Project/output.csv
0 → 100644
... | @@ -1797,6 +1797,11 @@ | ... | @@ -1797,6 +1797,11 @@ |
1797 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", | 1797 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", |
1798 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" | 1798 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" |
1799 | }, | 1799 | }, |
1800 | + "bignumber.js": { | ||
1801 | + "version": "9.0.0", | ||
1802 | + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", | ||
1803 | + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" | ||
1804 | + }, | ||
1800 | "binary": { | 1805 | "binary": { |
1801 | "version": "0.3.0", | 1806 | "version": "0.3.0", |
1802 | "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", | 1807 | "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", |
... | @@ -2917,6 +2922,11 @@ | ... | @@ -2917,6 +2922,11 @@ |
2917 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", | 2922 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", |
2918 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" | 2923 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" |
2919 | }, | 2924 | }, |
2925 | + "csv-writer": { | ||
2926 | + "version": "1.6.0", | ||
2927 | + "resolved": "https://registry.npmjs.org/csv-writer/-/csv-writer-1.6.0.tgz", | ||
2928 | + "integrity": "sha512-NOx7YDFWEsM/fTRAJjRpPp8t+MKRVvniAg9wQlUKx20MFrPs73WLJhFf5iteqrxNYnsy924K3Iroh3yNHeYd2g==" | ||
2929 | + }, | ||
2920 | "currently-unhandled": { | 2930 | "currently-unhandled": { |
2921 | "version": "0.4.1", | 2931 | "version": "0.4.1", |
2922 | "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", | 2932 | "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", |
... | @@ -5970,6 +5980,17 @@ | ... | @@ -5970,6 +5980,17 @@ |
5970 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", | 5980 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", |
5971 | "dev": true | 5981 | "dev": true |
5972 | }, | 5982 | }, |
5983 | + "mysql": { | ||
5984 | + "version": "2.18.1", | ||
5985 | + "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz", | ||
5986 | + "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==", | ||
5987 | + "requires": { | ||
5988 | + "bignumber.js": "9.0.0", | ||
5989 | + "readable-stream": "2.3.7", | ||
5990 | + "safe-buffer": "5.1.2", | ||
5991 | + "sqlstring": "2.3.1" | ||
5992 | + } | ||
5993 | + }, | ||
5973 | "nan": { | 5994 | "nan": { |
5974 | "version": "2.14.1", | 5995 | "version": "2.14.1", |
5975 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", | 5996 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", |
... | @@ -8207,6 +8228,11 @@ | ... | @@ -8207,6 +8228,11 @@ |
8207 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", | 8228 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", |
8208 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" | 8229 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" |
8209 | }, | 8230 | }, |
8231 | + "sqlstring": { | ||
8232 | + "version": "2.3.1", | ||
8233 | + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", | ||
8234 | + "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=" | ||
8235 | + }, | ||
8210 | "sshpk": { | 8236 | "sshpk": { |
8211 | "version": "1.16.1", | 8237 | "version": "1.16.1", |
8212 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", | 8238 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", | ... | ... |
... | @@ -29,6 +29,7 @@ | ... | @@ -29,6 +29,7 @@ |
29 | "connect-mongo": "^3.2.0", | 29 | "connect-mongo": "^3.2.0", |
30 | "cookie-parser": "^1.4.5", | 30 | "cookie-parser": "^1.4.5", |
31 | "css-loader": "^3.5.3", | 31 | "css-loader": "^3.5.3", |
32 | + "csv-writer": "^1.6.0", | ||
32 | "dotenv": "^8.2.0", | 33 | "dotenv": "^8.2.0", |
33 | "express": "^4.17.1", | 34 | "express": "^4.17.1", |
34 | "express-flash": "0.0.2", | 35 | "express-flash": "0.0.2", |
... | @@ -40,6 +41,7 @@ | ... | @@ -40,6 +41,7 @@ |
40 | "morgan": "^1.10.0", | 41 | "morgan": "^1.10.0", |
41 | "multer": "^1.4.2", | 42 | "multer": "^1.4.2", |
42 | "multer-s3": "^2.9.0", | 43 | "multer-s3": "^2.9.0", |
44 | + "mysql": "^2.18.1", | ||
43 | "ngrok": "^3.2.7", | 45 | "ngrok": "^3.2.7", |
44 | "node-sass": "^4.14.1", | 46 | "node-sass": "^4.14.1", |
45 | "passport": "^0.4.1", | 47 | "passport": "^0.4.1", | ... | ... |
-
Please register or login to post a comment