Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
d3549c4
Add : 기초적인 구조 추가
xsungwook3x Aug 6, 2022
07d288f
Add: ts 방식을 위한 src폴도로 다시 재배치 및 dist폴더 설정 완료
xsungwook3x Aug 9, 2022
41fcf3b
Add: 안보이는 파일들 보이게하기위해 index.ts넣어놓음
xsungwook3x Aug 9, 2022
4828020
Add: start setting sequelize with RDS and it's worked
xsungwook3x Aug 9, 2022
d57b34e
Add: addApply
xsungwook3x Aug 15, 2022
cb82381
Add 퀵조회, 시각장애인 지원목록 조회 지원하기기능 추가
xsungwook3x Aug 17, 2022
41d1c24
Add : 나의 신내역 조회 퀵 사전예약 조회 기능 추가
xsungwook3x Aug 23, 2022
0643c11
Merge pull request #5 from sisicolcol/feature_quick_find
heeeesoo Aug 25, 2022
8607bdd
[0825] merge test
heeeesoo Aug 25, 2022
7dbb425
[0825]
heeeesoo Aug 25, 2022
db75802
[0825] 초기 설정
heeeesoo Aug 25, 2022
cd17493
Create .env
heeeesoo Aug 25, 2022
632e621
[0825] apply 적용
heeeesoo Aug 25, 2022
42fd8d3
[0825] login, signup
heeeesoo Aug 25, 2022
6bace14
Merge branch 'develop' into feature_test
heeeesoo Aug 25, 2022
999ef5b
Merge pull request #8 from sisicolcol/feature_test
heeeesoo Aug 25, 2022
a89fdb1
[0825] run 방식
heeeesoo Aug 25, 2022
49a564a
Update README.md
heeeesoo Aug 25, 2022
da877c8
Update tsconfig.json
heeeesoo Aug 25, 2022
304a319
[0825] apply 변경
heeeesoo Aug 25, 2022
66e8273
Merge pull request #9 from sisicolcol/feature_apply
heeeesoo Aug 25, 2022
1a21555
[0825] member db 수정
heeeesoo Aug 25, 2022
bcd1c92
Merge pull request #10 from sisicolcol/feature_apply
heeeesoo Aug 25, 2022
bb84016
initial commit
iamjooon2 Aug 25, 2022
8fd0c82
initial commit
iamjooon2 Aug 25, 2022
5f22f1f
initial commit
iamjooon2 Aug 25, 2022
a866fc6
Update AuthController.ts
heeeesoo Aug 25, 2022
afeeb76
[0826] checkJwt 수정
heeeesoo Aug 25, 2022
6ae6740
Merge pull request #11 from sisicolcol/feature_apply
heeeesoo Aug 25, 2022
050ec6f
Update checkJwt.ts
heeeesoo Aug 25, 2022
31b371d
Chore: .env 파일 설정
iamjooon2 Aug 25, 2022
87aa623
fix: datasource 파일 config 디렉토리로 이동
iamjooon2 Aug 25, 2022
ef2d22e
[0826] mem_id string 변경
heeeesoo Aug 25, 2022
d7979f6
Merge pull request #13 from sisicolcol/feature_apply
heeeesoo Aug 25, 2022
6e614a2
Merge pull request #12 from sisicolcol/feature_fake_chat
heeeesoo Aug 25, 2022
7c48568
[0826] db 정보 수정
heeeesoo Aug 25, 2022
4d1bdff
fix: datasource 다시 뺌
iamjooon2 Aug 25, 2022
2260ce5
add: 채팅방, 메시지 엔티티 적용
iamjooon2 Aug 25, 2022
c9fd22d
fix: repository 파스칼케이스 네이밍 수정:
iamjooon2 Aug 25, 2022
19349da
Update .gitignore
com8599 Aug 26, 2022
0a7dcff
Merge pull request #14 from sisicolcol/feature_fake_chat
iamjooon2 Aug 26, 2022
768fd52
Update README.md
iamjooon2 Aug 26, 2022
77a33bb
feat: 에러 픽스
com8599 Aug 26, 2022
73d1f4e
docs: how to start
com8599 Aug 26, 2022
9ac6bc7
Merge pull request #15 from sisicolcol/bugfix/datasource-init
com8599 Aug 26, 2022
acd428a
WIP
iamjooon2 Aug 26, 2022
d9bef0d
[0826] package.json 수정
heeeesoo Aug 26, 2022
e62c241
chore: swagger-ui
com8599 Aug 26, 2022
15763c4
docs: swagger-output
com8599 Aug 26, 2022
2a90ce9
docs: update readme
com8599 Aug 26, 2022
44944d9
Merge branch 'develop' into feature/swagger-ui
com8599 Aug 26, 2022
0978b81
Merge pull request #16 from sisicolcol/feature/swagger-ui
com8599 Aug 26, 2022
0760988
Update package.json
heeeesoo Aug 26, 2022
38130ca
[0826] req, res 에러
heeeesoo Aug 26, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
ACCESS_TOKEN_SECRET=
REFRESH_TOKEN_SECRET=
DB_HOST=
DB_PORT=
DB_USERNAME=
DB_PASSWORD=
DB_NAME=
SERVER_PORT=
16 changes: 16 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
.idea/
/idea

.vscode/

node_modules/
node_modules/*
/node_modules

build/
tmp/
temp/
.env
package-lock.json
yarn-error.log
yarn.lock
29 changes: 29 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1 +1,30 @@
# server

before start
```
npm install
1. .env.example이 있는 경로에 .env 파일을 생성합니다
2. 노션 워크스페이스 백엔드 - .env 파일로 들어갑니다
3. 노션에 있는 내용을 .env 파일에 복붙합니다
4. npm run start
```

how to start
```
npm run start
```

default page
```
http://localhost:3000
```

generating api on swagger
```
node .\swagger-generator.ts
```

api page
```
http://localhost:3000/swagger/
```
15 changes: 15 additions & 0 deletions dist/app.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/app.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions dist/models/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/models/index.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

46 changes: 46 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{
"name": "server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"devDependencies": {
"@types/express": "^4.17.13",
"@types/node": "^16.11.10",
"nodemon": "^2.0.19",
"ts-node": "10.7.0",
"typescript": "4.5.2"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "ts-node src/index.ts",
"typeorm": "typeorm-ts-node-commonjs",
"dev:server": "nodemon --watch 'src/**/*.ts' --exec \"ts-node\" src/index.ts"
},
"repository": {
"type": "git",
"url": "git+https://github.com/sisicolcol/server.git"
},
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/sisicolcol/server/issues"
},
"homepage": "https://github.com/sisicolcol/server#readme",
"dependencies": {
"bcryptjs": "^2.4.3",
"body-parser": "^1.20.0",
"class-validator": "^0.13.2",
"dotenv": "^16.0.1",
"express": "^4.18.1",
"highlight.js": "^11.6.0",
"jsonwebtoken": "^8.5.1",
"mysql": "^2.14.1",
"parse5": "^7.0.0",
"reflect-metadata": "^0.1.13",
"sqlstring": "^2.3.3",
"swagger-autogen": "^2.21.5",
"swagger-jsdoc": "^6.2.5",
"swagger-ui-express": "^4.5.0",
"typeorm": "^0.3.7"
}
}
13 changes: 13 additions & 0 deletions src/app.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import * as express from 'express';
import * as swaggerUi from 'swagger-ui-express';
const swaggerFile = require("./swagger-output");

const app = express();
app.use(
"/swagger",
swaggerUi.serve,
swaggerUi.setup(swaggerFile),
express.json()
);

export default app;
19 changes: 19 additions & 0 deletions src/config/datasource.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import * as dotenv from 'dotenv';
dotenv.config();

import "reflect-metadata";
import { DataSource } from "typeorm";

export const AppDataSource = new DataSource({
type: "mysql",
host: process.env.DB_HOST,
port: Number(process.env.DB_PORT),
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
synchronize: true,
logging: true,
entities: ["src/entity/**/*.ts"],
migrations: ["src/migration/**/*.ts"],
subscribers: [],
});
55 changes: 55 additions & 0 deletions src/controller/AuthController.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
require('dotenv').config()
import { Request, Response } from "express";
import * as jwt from "jsonwebtoken";
// import {validate} from "class-validator";
import { Member } from '../entity/Member';
import { AppDataSource } from "../datasource"

class AuthController{

// api/auth/login
static login = async(req : Request, res: Response)=>{
console.log('req:',req);
// check if id, password are set
let {mem_id,password} = req.body;
console.log(mem_id,password);
if(!(mem_id && password)){
res.status(400).send();
}

let member: Member;
// get member from db
try {
member = await AppDataSource.manager.findOneBy(Member,{mem_id : mem_id});
console.log(member);
} catch (error) {
console.log(error);
res.status(401).send();
}

// check if encrypted password match
if(!member.checkIfUnencryptedPasswordIsValid(password)){
console.log("error : check if encrypted password match");
res.status(401).send();
return;
}

//Sing JWT, valid for 1 hour
const payload={mem_id:member.mem_id,mem_type:member.mem_type}
const token = jwt.sign(
payload,
process.env.ACCESS_TOKEN_SECRET,
{expiresIn: "1h"}
);

//Send the jwt in the response
res.send(token);

}

static changePassword = async() => {

}

}
export default AuthController;
66 changes: 66 additions & 0 deletions src/controller/MemberController.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import { Response, Request } from "express";
import { Member } from '../entity/Member';
import { AppDataSource } from "../config/datasource"
import { validate } from "class-validator";

class MemberController{
static listAll = async(req: Request, res: Response)=>{
let data = await AppDataSource.manager.find(Member);
res.status(200).send(data);
}

static getOneById = async() => {

}

// /api/auth/signup
static newMember = async(req: Request, res: Response) => {
console.log("회원가입");
let {mem_id,password,mem_name,mem_phone,mem_gender,mem_card,mem_address} = req.body;
const member = new Member();
member.mem_id=mem_id;
member.password=password;
member.mem_name=mem_name;
member.mem_phone=mem_phone;
member.mem_gender=mem_gender;
// member.mem_card=mem_card;
// member.mem_address=mem_address;

if (req.body.mem_cert){
member.mem_cert=req.body.mem_cert
member.mem_type=false;
}else{
member.mem_card=mem_card;
member.mem_address=mem_address;
member.mem_type=true;
}

// validate if the parameters are ok
// const errors = await validate(member);
// if (errors.length >0){
// res.status(400).send(errors);
// return;
// }

// hash the password, to securely store on DB
member.hashPassword();

const mem_check = await AppDataSource.manager.findOneBy(Member,{mem_id : mem_id});
if(mem_check){
res.status(400).send({msg:"member is already taken"});
}else{
const response = await AppDataSource.manager.save(member);
console.log(response);
res.status(200).send({state:"ok"});
}
}

static editMember = async() => {

}

static deleteMember = async() => {

}
}
export default MemberController;
69 changes: 69 additions & 0 deletions src/controller/apply.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import {Response,Request} from "express";
import {Apply} from "../entity/Apply";
import {AppDataSource} from "../config/datasource";
import {ApplyRepository} from "../repository/ApplyRepository";

const getQuickApply = async (req:Request,res:Response)=>{//퀵 지원목록 조회
try {
let data = await ApplyRepository.findQuickApply();

res.status(200).send({state:"ok",data:{data}});

}catch (err){
res.status(500).send({error:{err}});
console.log(err);
}

}

const getPreApply = async (req:Request,res:Response)=>{ // 사전예약 지원 목록 조회
try{
let data=await ApplyRepository.findPreApply();

res.status(200).send({state:"ok",data:{data}})
}catch (err){
res.status(500).send({error:{err}});
console.log(err);
}



}

const addApply = async (req:Request,res:Response)=>{
try{
const apply = new Apply();
apply.service_date=req.body.service_date;
apply.service_time=req.body.service_time;
apply.start_point=req.body.start_point;
apply.end_point=req.body.end_point;
apply.duration=req.body.duration;
apply.contents=req.body.contents;
apply.details=req.body.details;
apply.way=req.body.way;
apply.mem_id=req.body.mem_id;

await AppDataSource.manager.save(apply);

res.status(200).send({state:"ok",message:"create apply success"})
}catch(err){
res.status(500).send({error:{err}});
console.log(err);
}

}

const getMyApply=async (req:Request,res:Response)=>{// 시각장애인 본인의 지원 조회
try {
let resource = await ApplyRepository.findByMem_Id(req.params.mem_id);
res.send({state:"ok",data:{resource}});
}catch(err){
res.status(500).send({error:{err}});
console.log(err);
}

}

export {
addApply,getQuickApply,getPreApply,getMyApply
}
Empty file.
19 changes: 19 additions & 0 deletions src/datasource.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import * as dotenv from 'dotenv';
dotenv.config();

import "reflect-metadata";
import { DataSource } from "typeorm";

export const AppDataSource = new DataSource({
type: "mysql",
host: process.env.DB_HOST,
port: Number(process.env.DB_PORT),
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
synchronize: true,
logging: true,
entities: ["src/entity/**/*.ts"],
migrations: ["src/migration/**/*.ts"],
subscribers: [],
});
Loading