-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[refactor] Change database to MongoDB #119
Changes from all commits
40ffa01
5e074b2
55b082c
de9f2a2
cbbdfda
4858acd
dbc9d95
bec3e6b
b620d0c
86c12e0
a816410
dccdb1a
c701fa1
db21ca8
29554a2
9f383b3
0d1c6f6
5bdcbb3
30ca5e0
1673c3f
b2ce5f3
937afea
731b59f
0fd39d7
f7a5ffb
de207ab
217fec4
83c34c1
b585f9b
0841ef7
ab8108d
1884455
288d642
28b5519
70d3f74
1a0a8b6
de66584
e9dd2d9
ab83a8e
0cccf0f
0f8df95
387296b
6335316
36962b0
4839eb6
dd6ea38
d1c8f4e
2a62a60
adbcda5
5181d3c
a15157d
c502dc5
5674211
a5c351f
519ea52
aa8c10e
2d1dce6
fd878d7
6e9312a
77358f4
8768c26
b3714e7
8998266
766dc36
b492b4d
157253a
86fc75c
3e1331c
608761a
2eeaafa
7b2f9e2
43eff97
b757034
25c075f
29c96f8
fac3a2f
a7d8a1a
1ce170a
5c9a4cd
9ffdebe
e8d8022
094911d
5bc7abd
3ce633c
e4173d0
9d2a082
5942873
8248fc8
8ab3145
f9c91f4
e8f1bdb
eb20f96
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
This file was deleted.
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
import mongoose from "mongoose"; | ||
|
||
export interface IBook { | ||
_id: mongoose.Schema.Types.ObjectId; | ||
isbn: number; | ||
isbn_sub: number; | ||
title: string; | ||
author: [string]; | ||
translator: [string]; | ||
thumbnail: string; | ||
publication_dt: string; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
import mongoose from "mongoose"; | ||
|
||
export interface IReview { | ||
_id: mongoose.Schema.Types.ObjectId; | ||
user_id: mongoose.Schema.Types.ObjectId; | ||
book_id: mongoose.Schema.Types.ObjectId; | ||
question_list: [string]; | ||
answer_one: string; | ||
answer_two: string; | ||
answer_three: object; | ||
review_st: number; | ||
finish_St: boolean; | ||
created_at: Date; | ||
updated_at: Date; | ||
is_deleted: boolean; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
import mongoose from "mongoose"; | ||
|
||
export interface IUser { | ||
_id: mongoose.Schema.Types.ObjectId; | ||
email: string; | ||
password: string; | ||
nickname: string; | ||
img: string; | ||
refresh_token: string; | ||
email_code: string; | ||
created_at: Date; | ||
updated_at: Date; | ||
is_deleted: boolean; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
import _ from "lodash"; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ์ด ํ์ผ ์๋ js์ฌ์ ๊ธํ๊ฒ ts๋ก ๋ฐ๊พผ๊ฑด๋ ํ๋ผ๋ฏธํฐ๋ ํจ์์ ํ์ ์ง์ ํด์ผ๊ฒ ๋ค ๋์ค์ |
||
|
||
export const toCamel = (s) => { | ||
return s.replace(/([-_][a-z])/gi, ($1) => { | ||
return $1.toUpperCase().replace("-", "").replace("_", ""); | ||
}); | ||
}; | ||
|
||
export const isArray = (a) => { | ||
return Array.isArray(a); | ||
}; | ||
|
||
export const isObject = (o) => { | ||
return o === Object(o) && !isArray(o) && typeof o !== "function"; | ||
}; | ||
|
||
export const keysToCamel = (o) => { | ||
if (isObject(o)) { | ||
const n = {}; | ||
|
||
Object.keys(o).forEach((k) => { | ||
n[toCamel(k)] = o[k]; | ||
}); | ||
|
||
return n; | ||
} else if (isArray(o)) { | ||
return o.map((i) => { | ||
return keysToCamel(i); | ||
}); | ||
} | ||
|
||
return o; | ||
}; | ||
|
||
export const keysToSnake = (o) => { | ||
if (isObject(o)) { | ||
const n = {}; | ||
|
||
Object.keys(o).forEach((k) => { | ||
n[_.snakeCase(k)] = o[k]; | ||
}); | ||
|
||
return n; | ||
} else if (isArray(o)) { | ||
return o.map((i) => { | ||
return _.snakeCase(i); | ||
}); | ||
} | ||
|
||
return o; | ||
}; | ||
|
||
export const toSnakeString = (e) => { | ||
return e | ||
.match(/([A-Z])/g) | ||
.reduce((str, c) => str.replace(new RegExp(c), "_" + c.toLowerCase()), e) | ||
.substring(e.slice(0, 1).match(/([A-Z])/g) ? 1 : 0); | ||
}; | ||
|
||
export const toCamelString = (e) => { | ||
return e.replace(/_([a-z])/g, (g) => g[1].toUpperCase()); | ||
}; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
import mongoose from "mongoose"; | ||
import config from "../config"; | ||
|
||
// models | ||
import User from "../models/User"; | ||
import Book from "../models/Book"; | ||
import Review from "../models/Review"; | ||
|
||
const connectDB = async () => { | ||
try { | ||
await mongoose.connect(config.mongoURI, {}); | ||
|
||
await User.createCollection().then((collection) => { | ||
console.log("User Collection is created!"); | ||
}); | ||
await Book.createCollection().then((collection) => { | ||
console.log("Book Collection is created!"); | ||
}); | ||
await Review.createCollection().then((collection) => { | ||
console.log("Review Collection is created!"); | ||
}); | ||
|
||
console.log("Mongoose Connected ..."); | ||
} catch (err) { | ||
console.error(err.message); | ||
process.exit(1); | ||
} | ||
}; | ||
|
||
export default connectDB; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
์ธ์ฌํ ๋ฉ์ธ์ง ..