Showing
8 changed files
with
175 additions
and
179 deletions
DB.txt
0 → 100644
| 1 | +<회원 정보> | ||
| 2 | +CREATE TABLE tunnel.users( | ||
| 3 | +id INT NOT NULL AUTO_INCREMENT, | ||
| 4 | +name VARCHAR(30) NOT NULL, | ||
| 5 | +pw VARCHAR(30) NOT NULL, | ||
| 6 | +personality CHAR(4) NOT NULL, | ||
| 7 | +status TINYINT NOT NULL, | ||
| 8 | +PRIMARY KEY(id), | ||
| 9 | +UNIQUE INDEX name_UNIQUE (name ASC) | ||
| 10 | +) | ||
| 11 | +COMMENT = 'user information' | ||
| 12 | +DEFAULT CHARACTER SET = utf8 | ||
| 13 | +ENGINE = InnoDB; | ||
| 14 | + | ||
| 15 | +<사용자 게시물> | ||
| 16 | +CREATE TABLE tunnel.posts( | ||
| 17 | +id INT NOT NULL AUTO_INCREMENT, | ||
| 18 | +userid VARCHAR(30) NOT NULL, | ||
| 19 | +post TEXT NOT NULL, | ||
| 20 | +created_at DATETIME NOT NULL DEFAULT now(), | ||
| 21 | +status TINYINT NOT NULL, | ||
| 22 | +PRIMARY KEY(id), | ||
| 23 | +INDEX userid_idx (userid ASC), | ||
| 24 | +CONSTRAINT commenter FOREIGN KEY (userid) REFERENCES tunnel.users (name) | ||
| 25 | +ON DELETE CASCADE | ||
| 26 | +ON UPDATE CASCADE) | ||
| 27 | + | ||
| 28 | +COMMENT = 'post information' | ||
| 29 | +DEFAULT CHARACTER SET = utf8 | ||
| 30 | +ENGINE = InnoDB; | ||
| 31 | + | ||
| 32 | +<후 처리> | ||
| 33 | +ALTER TABLE tunnel.posts MODIFY post TEXT CHARACTER SET utf8mb4; | ||
| 34 | +:게시물에 이모지 사용가능하게 칼럼 수정. | ||
| 35 | + | ||
| 36 | +<댓글> | ||
| 37 | +CREATE TABLE tunnel.comments( | ||
| 38 | +id INT NOT NULL AUTO_INCREMENT, | ||
| 39 | +postid INT NOT NULL, | ||
| 40 | +userid VARCHAR(30) NOT NULL, | ||
| 41 | +created_at DATETIME NOT NULL DEFAULT now(), | ||
| 42 | +comment TEXT NOT NULL, | ||
| 43 | +PRIMARY KEY(id), | ||
| 44 | +INDEX postid_idx (postid ASC), | ||
| 45 | +CONSTRAINT post_id FOREIGN KEY (postid) REFERENCES tunnel.posts (id) | ||
| 46 | +ON DELETE CASCADE | ||
| 47 | +ON UPDATE CASCADE, | ||
| 48 | +CONSTRAINT user_id FOREIGN KEY (userid) REFERENCES tunnel.users (name) | ||
| 49 | +ON UPDATE CASCADE | ||
| 50 | +) | ||
| 51 | + | ||
| 52 | +COMMENT = 'post information' | ||
| 53 | +DEFAULT CHARACTER SET = utf8 | ||
| 54 | +ENGINE = InnoDB; | ||
| 55 | + | ||
| 56 | +<후 처리> | ||
| 57 | +ALTER TABLE tunnel.comments MODIFY comment TEXT CHARACTER SET utf8mb4; | ||
| 58 | +: 댓글에 이모지 사용가능하게 칼럼 수정. | ||
| 59 | + | ||
| 60 | + | ||
| 61 | + | ||
| 62 | +<명령어> | ||
| 63 | +show databases; | ||
| 64 | +use tunnel; | ||
| 65 | +show tables; | ||
| 66 | +DESC tunnel.users ; #유저테이블 자세히 보기 | ||
| 67 | +DROP TABLE tunnel.users; #유저테이블 지우기 | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
tunnel_BE/server/config/config.json
0 → 100644
| 1 | +{ | ||
| 2 | + "development": { | ||
| 3 | + "username": "root", | ||
| 4 | + "password": "tunnel", | ||
| 5 | + "database": "tunnel", | ||
| 6 | + "host": "127.0.0.1", | ||
| 7 | + "dialect": "mysql" | ||
| 8 | + }, | ||
| 9 | + "test": { | ||
| 10 | + "username": "root", | ||
| 11 | + "password": null, | ||
| 12 | + "database": "database_test", | ||
| 13 | + "host": "127.0.0.1", | ||
| 14 | + "dialect": "mysql" | ||
| 15 | + }, | ||
| 16 | + "production": { | ||
| 17 | + "username": "root", | ||
| 18 | + "password": "tunnel", | ||
| 19 | + "database": "tunnel", | ||
| 20 | + "host": "127.0.0.1", | ||
| 21 | + "dialect": "mysql" | ||
| 22 | + } | ||
| 23 | +} |
tunnel_BE/server/models/index.js
0 → 100644
| 1 | +//mysql사용을 위한 sequelize 세팅 파일 | ||
| 2 | +const Sequelize = require('sequelize'); | ||
| 3 | + | ||
| 4 | +//table(모델)과 연결 | ||
| 5 | +const User = require("./user.js"); | ||
| 6 | + | ||
| 7 | +const env = process.env.NODE_ENV || 'development'; //개발버전 | ||
| 8 | +const config = require('../config/config.json')[env]; | ||
| 9 | +const db = {}; | ||
| 10 | + | ||
| 11 | +const sequelize = new Sequelize(config.database, config.username, config.password, config); | ||
| 12 | + | ||
| 13 | + | ||
| 14 | +db.sequelize = sequelize; | ||
| 15 | + | ||
| 16 | +db.User = User; | ||
| 17 | +User.init(sequelize); | ||
| 18 | +User.associate(db); | ||
| 19 | + | ||
| 20 | + | ||
| 21 | +module.exports = db; |
tunnel_BE/server/models/user.js
0 → 100644
| 1 | +const Sequelize = require('sequelize'); | ||
| 2 | + | ||
| 3 | +module.exports = class User extends Sequelize.Model { | ||
| 4 | + static init(sequelize) { | ||
| 5 | + return super.init({ | ||
| 6 | + name:{ | ||
| 7 | + type: Sequelize.STRING(30), | ||
| 8 | + allowNull: false, | ||
| 9 | + unique:true, | ||
| 10 | + }, | ||
| 11 | + pw:{ | ||
| 12 | + type: Sequelize.STRING(30), | ||
| 13 | + allowNull: false, | ||
| 14 | + }, | ||
| 15 | + personality:{ | ||
| 16 | + type: Sequelize.CHAR(4), | ||
| 17 | + allowNull: false, | ||
| 18 | + }, | ||
| 19 | + status:{ | ||
| 20 | + type: Sequelize.BOOLEAN, | ||
| 21 | + allowNull: false, | ||
| 22 | + }, | ||
| 23 | + },{ | ||
| 24 | + sequelize, | ||
| 25 | + timestamps:false, | ||
| 26 | + underscored:false, | ||
| 27 | + modelName: 'User', | ||
| 28 | + tableName:'users', | ||
| 29 | + paranoid:false, | ||
| 30 | + charset:'utf8', | ||
| 31 | + collate:'utf8_general_ci', | ||
| 32 | + }); | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + | ||
| 36 | + static associate(db) {} | ||
| 37 | +}; | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
This diff is collapsed. Click to expand it.
| ... | @@ -9,7 +9,10 @@ | ... | @@ -9,7 +9,10 @@ |
| 9 | "dotenv": "^10.0.0", | 9 | "dotenv": "^10.0.0", |
| 10 | "express": "^4.17.1", | 10 | "express": "^4.17.1", |
| 11 | "express-session": "^1.17.2", | 11 | "express-session": "^1.17.2", |
| 12 | - "morgan": "^1.10.0" | 12 | + "morgan": "^1.10.0", |
| 13 | + "mysql2": "^2.3.3", | ||
| 14 | + "sequelize": "^6.12.0-beta.1", | ||
| 15 | + "sequelize-cli": "^6.3.0" | ||
| 13 | }, | 16 | }, |
| 14 | "devDependencies": { | 17 | "devDependencies": { |
| 15 | "nodemon": "^2.0.15" | 18 | "nodemon": "^2.0.15" | ... | ... |
| ... | @@ -2,11 +2,21 @@ const express = require("express"); | ... | @@ -2,11 +2,21 @@ const express = require("express"); |
| 2 | const bodyParser = require("body-parser"); | 2 | const bodyParser = require("body-parser"); |
| 3 | const router = express.Router(); | 3 | const router = express.Router(); |
| 4 | 4 | ||
| 5 | +///////////// | ||
| 6 | +const {User}=require('../models'); | ||
| 7 | +////////// | ||
| 8 | + | ||
| 5 | router.get('/',(req,res)=>{ | 9 | router.get('/',(req,res)=>{ |
| 6 | res.send('회원가입 페이지'); | 10 | res.send('회원가입 페이지'); |
| 7 | }); | 11 | }); |
| 8 | 12 | ||
| 9 | router.post('/',(req,res)=>{ | 13 | router.post('/',(req,res)=>{ |
| 14 | + User.create({ | ||
| 15 | + name: '고병후', | ||
| 16 | + pw:'1234', | ||
| 17 | + personality:'infj', | ||
| 18 | + status:0 | ||
| 19 | + }) | ||
| 10 | console.log(req.body); | 20 | console.log(req.body); |
| 11 | return res.json({a: "hi"}); | 21 | return res.json({a: "hi"}); |
| 12 | }); | 22 | }); | ... | ... |
| 1 | +// 사용 모듈 import | ||
| 1 | const express = require("express"); | 2 | const express = require("express"); |
| 2 | const path = require("path"); | 3 | const path = require("path"); |
| 3 | const morgan = require("morgan"); | 4 | const morgan = require("morgan"); |
| ... | @@ -6,6 +7,8 @@ const session = require("express-session"); | ... | @@ -6,6 +7,8 @@ const session = require("express-session"); |
| 6 | const dotenv = require("dotenv"); | 7 | const dotenv = require("dotenv"); |
| 7 | const bodyParser = require("body-parser"); | 8 | const bodyParser = require("body-parser"); |
| 8 | 9 | ||
| 10 | +const {sequelize}=require('./models/index.js'); | ||
| 11 | + | ||
| 9 | dotenv.config(); | 12 | dotenv.config(); |
| 10 | const indexRouter = require('./routes/index.js'); | 13 | const indexRouter = require('./routes/index.js'); |
| 11 | const loginRouter = require('./routes/login.js'); | 14 | const loginRouter = require('./routes/login.js'); |
| ... | @@ -15,6 +18,15 @@ const app = express(); | ... | @@ -15,6 +18,15 @@ const app = express(); |
| 15 | app.set('port', process.env.PORT || 3001); | 18 | app.set('port', process.env.PORT || 3001); |
| 16 | const port = app.get('port'); | 19 | const port = app.get('port'); |
| 17 | 20 | ||
| 21 | +//DB연결 | ||
| 22 | +sequelize.sync({force: false}) | ||
| 23 | +.then(()=>{ | ||
| 24 | + console.log("DB연결 완료") | ||
| 25 | +}) | ||
| 26 | +.catch((err)=>{ | ||
| 27 | + console.log(err); | ||
| 28 | +}); | ||
| 29 | + | ||
| 18 | //미들웨어 설정 | 30 | //미들웨어 설정 |
| 19 | app.use(morgan('dev')); | 31 | app.use(morgan('dev')); |
| 20 | app.use(express.json()); //json형식으로 데이터 전달 | 32 | app.use(express.json()); //json형식으로 데이터 전달 |
| ... | @@ -33,10 +45,6 @@ app.use(session({ | ... | @@ -33,10 +45,6 @@ app.use(session({ |
| 33 | 45 | ||
| 34 | 46 | ||
| 35 | //라우팅 | 47 | //라우팅 |
| 36 | -//app.use('/',indexRouter); | ||
| 37 | -//app.use('/login',loginRouter); | ||
| 38 | - | ||
| 39 | - | ||
| 40 | app.use('/api/register',registerRouter); // 회원가입 페이지 | 48 | app.use('/api/register',registerRouter); // 회원가입 페이지 |
| 41 | app.use('/api/login',loginRouter); //로그인 페이지 | 49 | app.use('/api/login',loginRouter); //로그인 페이지 |
| 42 | 50 | ||
| ... | @@ -52,177 +60,4 @@ app.use((req,res,next)=>{ | ... | @@ -52,177 +60,4 @@ app.use((req,res,next)=>{ |
| 52 | //포트를 연다. | 60 | //포트를 연다. |
| 53 | app.listen(port, ()=>{ | 61 | app.listen(port, ()=>{ |
| 54 | console.log(port,"번 포트로 대기중"); | 62 | console.log(port,"번 포트로 대기중"); |
| 55 | -}); | ||
| 56 | - | ||
| 57 | -//라우팅 | ||
| 58 | - | ||
| 59 | -/* | ||
| 60 | -//루트페이지 | ||
| 61 | -app.get('/', (req,res)=>{ | ||
| 62 | - res.sendFile(path.join(__dirname, '/fe/index.html')); | ||
| 63 | -}); | ||
| 64 | -//로그인페이지 | ||
| 65 | -app.get('/login', (req,res)=>{ | ||
| 66 | - res.send("로그인페이지"); | ||
| 67 | -}); | ||
| 68 | - | ||
| 69 | -app.get('/register', (req,res)=>{ | ||
| 70 | - res.send("회원가입 페이지"); | ||
| 71 | -}); | ||
| 72 | - | ||
| 73 | -*/ | ||
| 74 | - | ||
| 75 | - | ||
| 76 | - | ||
| 77 | - | ||
| 78 | - | ||
| 79 | -/* 물어볼 부분 | ||
| 80 | -app.use(session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }})); | ||
| 81 | -app.use(bodyParser.urlencoded({ extended: false })); | ||
| 82 | -app.use(bodyParser.json()); | ||
| 83 | -*/ | ||
| 84 | - | ||
| 85 | -/* | ||
| 86 | -var users = new Array(); | ||
| 87 | -users[0] = { | ||
| 88 | - "userId" : 1, | ||
| 89 | - "name" : "Oh", | ||
| 90 | - "password" : "abc", | ||
| 91 | - "isAdmin" : true | ||
| 92 | -} | ||
| 93 | -users[1] = { | ||
| 94 | - "userId" : 1, | ||
| 95 | - "name" : "Jung", | ||
| 96 | - "password" : "abc", | ||
| 97 | - "isAdmin" : true | ||
| 98 | -} | ||
| 99 | -users[2] = { | ||
| 100 | - "userId" : 2, | ||
| 101 | - "name" : "Go", | ||
| 102 | - "password" : "abc", | ||
| 103 | - "isAdmin" : true | ||
| 104 | -} | ||
| 105 | - | ||
| 106 | -app.put('/login', function (req, res) { | ||
| 107 | - var count = 0; | ||
| 108 | - var Found = false; | ||
| 109 | - | ||
| 110 | - while(count < users.length) { | ||
| 111 | - if (req.body.userId == users[count].userId | ||
| 112 | - && req.body.password == users[count].password) { | ||
| 113 | - req.session.userId = users[count].userId; | ||
| 114 | - req.session.isAdmin = users[count].isAdmin; | ||
| 115 | - Found = true; | ||
| 116 | - break; | ||
| 117 | - } | ||
| 118 | - else { | ||
| 119 | - count++; | ||
| 120 | - } | ||
| 121 | - } | ||
| 122 | - if(Found) { | ||
| 123 | - res.send("Login"); | ||
| 124 | - } | ||
| 125 | - else { | ||
| 126 | - res.send("Failed"); | ||
| 127 | - } | ||
| 128 | -}); | ||
| 129 | - | ||
| 130 | -app.put('/logout', function (req, res) { | ||
| 131 | - if (req.session.userId == req.body.userId) { | ||
| 132 | - req.session.userId = null; | ||
| 133 | - req.session.isAdmin = false; | ||
| 134 | - res.send("LogOut"); | ||
| 135 | - } | ||
| 136 | - else { | ||
| 137 | - res.send("Failed"); | ||
| 138 | - } | ||
| 139 | -}); | ||
| 140 | - | ||
| 141 | -var auth = function (req, res, next) { | ||
| 142 | - if (req.session.userId != null | ||
| 143 | - && req.session.isAdmin == true) | ||
| 144 | - next(); | ||
| 145 | - else | ||
| 146 | - res.send("Error"); | ||
| 147 | -}; | ||
| 148 | - | ||
| 149 | -app.get('/users/:userId', auth,function (req, res) { | ||
| 150 | - var inputId = req.params.userId; | ||
| 151 | - var count = 0; | ||
| 152 | - var Found = false; | ||
| 153 | - while(count < users.length) { | ||
| 154 | - if(inputId == users[count].userId){ | ||
| 155 | - Found = true; | ||
| 156 | - res.send(users[count]); | ||
| 157 | - break; | ||
| 158 | - } | ||
| 159 | - else { | ||
| 160 | - count++; | ||
| 161 | - } | ||
| 162 | - } | ||
| 163 | - | ||
| 164 | - if (!Found) { | ||
| 165 | - res.send("Not Found"); | ||
| 166 | - } | ||
| 167 | -}); | ||
| 168 | - | ||
| 169 | -app.put('/users',auth,function(req, res){ | ||
| 170 | - var inputId = req.body.userId; | ||
| 171 | - var count = 0; | ||
| 172 | - var Found = false; | ||
| 173 | - | ||
| 174 | - while (count < users.length) { | ||
| 175 | - if (inputId == users[count].userId) { | ||
| 176 | - Found = true; | ||
| 177 | - users[count] = req.body; | ||
| 178 | - res.send(users[count]); | ||
| 179 | - break; | ||
| 180 | - } | ||
| 181 | - else { | ||
| 182 | - count++; | ||
| 183 | - } | ||
| 184 | - } | ||
| 185 | - | ||
| 186 | - if(!Found) { | ||
| 187 | - res.send("Not Found"); | ||
| 188 | - } | ||
| 189 | - | ||
| 190 | -}); | ||
| 191 | - | ||
| 192 | -app.post('/users',auth,function(req, res){ | ||
| 193 | - var inputData = { | ||
| 194 | - "userId" : req.body.userId, | ||
| 195 | - "name" : req.body.name, | ||
| 196 | - "password" : req.body.password, | ||
| 197 | - "isAdmin" : req.body.isAdmin | ||
| 198 | - } | ||
| 199 | - users.push(inputData); | ||
| 200 | - res.send(inputData); | ||
| 201 | -}); | ||
| 202 | - | ||
| 203 | -app.delete('/users/:userId',auth,function(req, res){ | ||
| 204 | - var inputId = req.params.userId; | ||
| 205 | - var count = 0; | ||
| 206 | - var Found = false; | ||
| 207 | - var removed; | ||
| 208 | - | ||
| 209 | - while (count < users.length) { | ||
| 210 | - if (inputId == users[count].userId) { | ||
| 211 | - Found = true; | ||
| 212 | - removed = users.splice(count,1); | ||
| 213 | - console.log(users.length); | ||
| 214 | - res.send(removed); | ||
| 215 | - break; | ||
| 216 | - } | ||
| 217 | - else { | ||
| 218 | - count++; | ||
| 219 | - } | ||
| 220 | - } | ||
| 221 | - | ||
| 222 | - if (!Found) { | ||
| 223 | - res.send("Not Found"); | ||
| 224 | - } | ||
| 225 | -}); | ||
| 226 | -*/ | ||
| 227 | - | ||
| 228 | -//var server = app.listen(80); | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 63 | +}); | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment