Skip to content
Snippets Groups Projects
Commit e65a8277 authored by Leon A. Okida Gonçalves's avatar Leon A. Okida Gonçalves
Browse files

Add UserController

parent e894a984
No related branches found
No related tags found
No related merge requests found
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"apollo-server": "^3.9.0", "apollo-server": "^3.9.0",
"express": "^4.18.1",
"graphql": "^15.8.0" "graphql": "^15.8.0"
} }
}, },
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"apollo-server": "^3.9.0", "apollo-server": "^3.9.0",
"express": "^4.18.1",
"graphql": "^15.8.0" "graphql": "^15.8.0"
} }
} }
import * as express from "express";
import { User } from "../Classes/User";
import { ErrorHandler } from "../ErrorHandler";
import { Request } from "../Middleware/middleware";
export class UserController {
public static userPost(req: Request, res: express.Response) {
try {
let input = {
name: req.body.name,
email: req.body.email,
id: req.db.userID
}
const newUser: User = new User(ErrorHandler.userHandler(input));
req.db.createUser(newUser);
}
catch(err) {
res.status(400).json("Erro ao adicionar usuário: " + err.message);
}
res.json("Usuário adicionado com sucesso.");
}
public static userUpdate(req: Request, res: express.Response) {
try {
const userId = Math.abs(parseInt(req.params.id, 10));
ErrorHandler.idExists(userId, req.db.users);
let input = {
name: req.body.name,
email: req.body.email,
id: userId
}
const newUser: User = new User(ErrorHandler.userHandler(input));
req.db.updateUser(newUser, userId);
}
catch(err) {
res.status(400).json("Erro ao atualizar usuário: " + err.message);
}
res.json("Usuário atualizado com sucesso.");
}
public static userRemove(req: Request, res: express.Response) {
try {
const userId = Math.abs(parseInt(req.params.id, 10));
ErrorHandler.idExists(userId, req.db.users);
req.db.deleteUser(userId);
}
catch(err) {
res.status(400).json("Erro ao remover usuário: " + err.message);
}
res.json("Usuário removido com sucesso.");
}
public static userList(req: Request, res: express.Response) {
let users;
try {
users = req.db.listUsers();
}
catch (err) {
res.status(400).json("Erro ao exibir usuários: " + err.message);
}
res.json(users);
}
public static userGet(req: Request, res: express.Response) {
let user;
try {
const userId = Math.abs(parseInt(req.params.id, 10));
ErrorHandler.idExists(userId, req.db.users);
user = req.db.getUser(userId);
}
catch(err) {
res.status(400).json("Erro ao buscar usuário: " + err.message);
}
res.json(user);
}
}
import {UserInterface} from "./Classes/User" import {UserInterface} from "./Classes/User"
var isUpdate = false;
export class ErrorHandler { export class ErrorHandler {
public static idExists(id: number, array: any[]): void {
if (!(array.find(elem => elem.id == id)))
throw new Error("Element with id " + id + " does not exist");
isUpdate = true;
}
public static userHandler (input: any) { public static userHandler (input: any) {
if ((typeof input.name !== "string") || (!input.name.length)) if ((typeof input.name !== "string") || (!input.name.length))
...@@ -18,7 +26,8 @@ export class ErrorHandler { ...@@ -18,7 +26,8 @@ export class ErrorHandler {
userName: input.name, userName: input.name,
userEmail: input.email userEmail: input.email
} }
isUpdate = false;
return newUser; return newUser;
} }
} }
\ No newline at end of file
import * as ApolloServer from "apollo-server";
import * as express from "express";
import { DBHandler } from "../DBHandler";
export interface Request extends express.Request {
/** A Database handler instace */
db: DBHandler;
}
export type Middleware = (req: Request, res: express.Response, next: express.NextFunction) => void;
export function DBHandlerMw(): Middleware {
const db: DBHandler = new DBHandler();
return (req: Request, res: express.Response, next: express.NextFunction) => {
req.db = db;
next();
};
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment