Skip to content

Commit b4491a2

Browse files
committed
remake API to use Postgres instead of File storage
1 parent 89d42af commit b4491a2

File tree

10 files changed

+50
-90
lines changed

10 files changed

+50
-90
lines changed

config/config.js

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

config/config.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"development": {
3+
"username": "rusik",
4+
"password": "123",
5+
"database": "users_app_development",
6+
"host": "127.0.0.1",
7+
"dialect": "postgres"
8+
},
9+
"test": {
10+
"username": "rusik",
11+
"password": "123",
12+
"database": "users_app_test",
13+
"host": "127.0.0.1",
14+
"dialect": "postgres"
15+
}
16+
}

controllers/users.js

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,30 @@
1-
import { readUsers } from '../store'
21
import UsersCreate from '../services/users/create'
32
import UsersUpdate from '../services/users/update'
43
import UsersDelete from '../services/users/delete'
4+
import Repository from '../repositories/users'
55

66
export default function App(app) {
7-
app.get('/users', (_req, res) => {
8-
console.log('get users')
9-
const users = readUsers()
10-
return res.send({ success: true, users })
7+
app.get('/users', async (_req, res) => {
8+
const repo = new Repository()
9+
const users = await repo.list()
10+
11+
return res.status(200).json(users)
1112
})
1213

13-
app.post('/users', (req, res) => {
14+
app.post('/users', async (req, res) => {
1415
const { user } = new UsersCreate(req.body)
15-
return res.send({ success: true, user })
16+
return res.status(201).json(user)
1617
})
1718

1819
app.patch('/users/:id', (req, res) => {
1920
const params = { ...req.body, id: req.params.id }
2021
const { user } = new UsersUpdate(params)
21-
return res.send({ success: true, user })
22+
return res.status(201).json(user)
2223
})
2324

2425
app.delete('/users/:id', (req, res) => {
2526
const { id } = req.params
2627
new UsersDelete(id)
27-
return res.send( { success: true })
28+
return res.status(201).json({ deleted: true })
2829
})
2930
}

repositories/users.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import models from '../models/index'
2+
const { User } = models;
3+
4+
export default class UsersRepository {
5+
async list() {
6+
return await User.findAll()
7+
}
8+
}

server.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
require('dotenv').config()
12
const express = require("express")
23
import useRoutes from './controllers/users'
34

services/users/create.js

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
1-
import { readUsers, saveUsers } from '~/store'
1+
import models from '../../models/index'
2+
const { User } = models;
23

3-
export default params => {
4-
const users = readUsers()
5-
6-
const existUser = users.find(user => user.id === params.id)
7-
if (existUser) return
8-
users.push(params)
9-
saveUsers(users)
10-
console.log('return params',)
11-
return params
4+
export default async (params) => {
5+
const { user } = await User.create(params)
6+
return { user }
127
}

services/users/delete.js

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,6 @@
1-
import { readUsers, saveUsers } from '~/store'
1+
import models from '../../models/index'
2+
const { User } = models;
23

3-
export default id => {
4-
const users = readUsers()
5-
6-
const existUser = users.find(user => user.id === id)
7-
if (!existUser) return
8-
9-
const newUsers = users.map(user => user.id === id ? null : user)
10-
.filter(user => user)
11-
12-
saveUsers(newUsers)
13-
14-
return
4+
export default async (id) => {
5+
await User.destroy({ where: { id: id }})
156
}

services/users/update.js

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,8 @@
1-
import { readUsers, saveUsers } from '~/store'
1+
import models from '../../models/index'
2+
const { User } = models
23

3-
export default params => {
4-
const users = readUsers()
5-
6-
const existUser = users.find(user => user.id === params.id)
7-
if (!existUser) return
8-
9-
const newUsers = users.map(user => {
10-
if (user.id === params.id) {
11-
return { ...user, ...params }
12-
} else {
13-
return user
14-
}
15-
})
16-
17-
saveUsers(newUsers)
18-
return params
4+
export default async (params) => {
5+
const { id, ...attributes } = params
6+
await User.update(attributes, { where: { id: id } })
7+
return { user: await User.findOne({ where: { id: id }}) }
198
}

store.js

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

users.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)