Skip to content

Commit 2b20ead

Browse files
authored
Merge pull request #2 from RedJanvier/ch-setup-db
chore(database): setup initial routes
2 parents ef6deca + eb51286 commit 2b20ead

28 files changed

+480
-31
lines changed

.DS_Store

6 KB
Binary file not shown.

.env.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
PORT=4000
22
NODE_ENV=development
3+
DATABASE_URL=postgres://localhost/phantom-db

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ package-lock.json
33
.env
44
build
55
.nyc_output
6-
coverage
6+
coverage
7+
.dccache

.prettierrc.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
{
2-
"singleQuote": true
2+
"singleQuote": true,
3+
"trailingComma": "es5"
34
}

.sequelizerc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
const path = require('path');
2+
3+
module.exports ={
4+
config: path.resolve('./src/db/config', 'config.js'),
5+
'models-path': path.resolve('./src/db/models'),
6+
'seeders-path': path.resolve('./src/db/seeders'),
7+
'migrations-source-path': path.resolve('./src/db/migrations'),
8+
'migrations-compiled-path': path.resolve('./src/db/migrations'),
9+
}

.travis.yml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,19 @@ language: node_js
22

33
node_js: 'stable'
44

5+
services:
6+
- postgresql
7+
8+
env:
9+
- PORT=4000
10+
511
notifications:
612
email: false
713

8-
before_script: npm ci
14+
before_script:
15+
- createdb phantom-test-db -U postgres
16+
- npm ci
17+
- npm run migrate:test
918

1019
script: npm run coverage
1120

package.json

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,13 @@
99
"test": "NODE_ENV=test TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' mocha src/tests/**.test.ts -r ts-node/register --exit",
1010
"dev": "nodemon --exec ts-node -r dotenv/config.js src",
1111
"start": "node -r dotenv/config.js build",
12-
"build": "tsc"
12+
"build": "tsc",
13+
"migrate": "sequelize db:migrate",
14+
"migrate:undo": "sequelize db:migrate:undo:all",
15+
"migrate:test": "sequelize db:migrate --env test",
16+
"migrate:test:undo": "sequelize db:migrate:undo:all --env test",
17+
"seed": "npm run migrate:undo && npm run migrate && npx sequelize-cli-typescript db:seed:all",
18+
"seed:test": "npm run migrate:undo && npm run migrate && NODE_ENV=test npx sequelize-cli-typescript db:seed:all"
1319
},
1420
"repository": {
1521
"type": "git",
@@ -23,10 +29,14 @@
2329
},
2430
"homepage": "https://github.com/RedJanvier/phantom#readme",
2531
"dependencies": {
32+
"dotenv": "^8.2.0",
2633
"express": "^4.17.1",
2734
"helmet": "^4.2.0",
2835
"morgan": "^1.10.0",
2936
"nodemon": "^2.0.6",
37+
"pg": "^8.5.1",
38+
"pg-hstore": "^2.3.3",
39+
"sequelize": "^6.3.5",
3040
"swagger-ui-express": "^4.1.4",
3141
"ts-node": "^9.0.0",
3242
"tslint": "^6.1.3",
@@ -37,11 +47,11 @@
3747
"@types/express": "^4.17.9",
3848
"@types/mocha": "^8.0.4",
3949
"@types/morgan": "^1.9.2",
50+
"@types/sequelize": "^4.28.9",
4051
"@types/swagger-ui-express": "^4.1.2",
4152
"chai": "^4.2.0",
4253
"chai-http": "^4.3.0",
4354
"coveralls": "^3.1.0",
44-
"dotenv": "^8.2.0",
4555
"eslint": "^7.13.0",
4656
"eslint-config-airbnb": "^18.2.1",
4757
"eslint-plugin-import": "^2.22.1",
@@ -50,6 +60,7 @@
5060
"eslint-plugin-react-hooks": "^4.2.0",
5161
"mocha": "^8.2.1",
5262
"nyc": "^15.1.0",
63+
"sequelize-cli-typescript": "^3.2.0-c",
5364
"sinon": "^9.2.1"
5465
}
5566
}

src/PULL_REQUEST_TEMPLATE.md

Lines changed: 0 additions & 8 deletions
This file was deleted.

src/controllers/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import role from './role';
2+
import user from './user';
3+
4+
export { role, user };

src/controllers/role.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { Request, Response } from 'express';
2+
import Role from '../db/models/role';
3+
import Respond from '../utils';
4+
5+
export default class Roles {
6+
static async create(req: Request, res: Response) {
7+
const role = await Role.create(req.body);
8+
Respond.success(res, 201, 'Role created', role);
9+
}
10+
11+
static async delete(req: Request, res: Response) {
12+
const role = await Role.destroy({ where: { id: req.params.id } });
13+
Respond.success(res, 200, 'Role deleted!', role);
14+
}
15+
16+
static async update(req: Request, res: Response) {
17+
const role = await Role.findOne({ where: { id: req.params.id } });
18+
const roleExists = await Role.findOne({ where: req.body });
19+
if (roleExists) return Respond.error(res, 409, 'Role already exists!');
20+
21+
await role?.update(req.body);
22+
return Respond.success(res, 200, 'Role updated!', role);
23+
}
24+
}

0 commit comments

Comments
 (0)