diff --git a/back-express/src/db.ts b/back-express/src/db.ts index 027dcb8..94f2997 100644 --- a/back-express/src/db.ts +++ b/back-express/src/db.ts @@ -1,5 +1,5 @@ import mysql, { QueryError } from "mysql2/promise"; -import { ResponseError } from "./utils/error/response-error.model"; +import { ResponseError } from "./utils/response/response-error.model"; const db_pool = mysql.createPool({ host: "localhost", diff --git a/back-express/src/routes/default.route.ts b/back-express/src/routes/default.route.ts new file mode 100644 index 0000000..8c7c48a --- /dev/null +++ b/back-express/src/routes/default.route.ts @@ -0,0 +1,8 @@ +import { Router } from "express"; + +export const defaultRoute = Router(); + +defaultRoute.get("/", (_, res) => { + res.send("Nothing to see here"); + res.status(200); +}); diff --git a/back-express/src/routes/defaultRoute.ts b/back-express/src/routes/defaultRoute.ts deleted file mode 100644 index 7e36406..0000000 --- a/back-express/src/routes/defaultRoute.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Router } from "express"; - -export const defaultRoute = Router(); - -defaultRoute.get("/", (req, res) => { - res.status(400); - res.send("Something"); -}); - -defaultRoute.get("/", (req, res) => { - res.status(400); - res.send("Something"); -}); - -defaultRoute.post("/test", (req, res) => { - res.send("Something with " + JSON.stringify(req.body)); -}); diff --git a/back-express/src/routes/index.ts b/back-express/src/routes/index.ts index 5cdc01b..76ee57c 100644 --- a/back-express/src/routes/index.ts +++ b/back-express/src/routes/index.ts @@ -1,6 +1,6 @@ import express from "express"; -import { defaultRoute } from "./defaultRoute"; +import { defaultRoute } from "./default.route"; import { exampleRoutes } from "./example/example.routes"; import { userRoutes } from "./users/users.routes"; diff --git a/back-express/src/routes/users/users.routes.ts b/back-express/src/routes/users/users.routes.ts index f5113ce..63e56de 100644 --- a/back-express/src/routes/users/users.routes.ts +++ b/back-express/src/routes/users/users.routes.ts @@ -1,16 +1,19 @@ import { Router } from "express"; import UserService from "./users.service"; +import { sanitize_user } from "./users.utils"; +import { ResponseSuccess } from "../../utils/response/response-success.model"; +import { ResponseError } from "../../utils/response/response-error.model"; export const userRoutes = Router(); const userService = new UserService(); -//TODO: remove info from these Users and block access to NON-admins +//TODO: block access to NON-admins or simply comment userRoutes.get("/", async (_, res) => { try { const response = await userService.getAllUsers(); res.status(200); - res.send(response); + res.send(new ResponseSuccess(response.map((user) => sanitize_user(user)))); } catch (e) { res.status(500); res.send(e); @@ -22,10 +25,10 @@ userRoutes.get("/:username", async (req, res) => { const response = await userService.getUserByUsername(req.params.username); if (response) { res.status(200); - res.send(response); + res.send(new ResponseSuccess(sanitize_user(response))); } else { - res.status(400); - res.send("error"); + res.status(404); + res.send(new ResponseError({ code: "NOT_FOUND", number: 404 })); } } catch (e) { res.status(500); diff --git a/back-express/src/routes/users/users.service.ts b/back-express/src/routes/users/users.service.ts index 8f6fceb..000bf08 100644 --- a/back-express/src/routes/users/users.service.ts +++ b/back-express/src/routes/users/users.service.ts @@ -5,7 +5,7 @@ class UserService { constructor() {} async getAllUsers(): Promise { - const data = await db_query("select * from user where id == 1"); + const data = await db_query("select * from user"); return data as User[]; } @@ -16,20 +16,6 @@ class UserService { console.log("Data:", data); return data.length ? (data[0] as User) : null; } - - // getUserById(id: number) { - // return new Promise((resolve, reject) => - // db_connection.query("select * from user", (err, rows, fields) => { - // console.log(rows); - // if (err) { - // console.error("Mysql Error on User SELECT: ", err); - // reject(err); - // } else { - // resolve(rows); - // } - // }), - // ); - // } } export default UserService; diff --git a/back-express/src/routes/users/users.types.ts b/back-express/src/routes/users/users.types.ts index d45adde..b7b2576 100644 --- a/back-express/src/routes/users/users.types.ts +++ b/back-express/src/routes/users/users.types.ts @@ -11,4 +11,7 @@ export type User = { password: string; roles: Role[]; picture: string; + created_at: string; }; + +export type UserDetailResult = Omit; diff --git a/back-express/src/routes/users/users.utils.ts b/back-express/src/routes/users/users.utils.ts new file mode 100644 index 0000000..ff27810 --- /dev/null +++ b/back-express/src/routes/users/users.utils.ts @@ -0,0 +1,7 @@ +import { User, UserDetailResult } from "./users.types"; + +// TODO: prettify this +export function sanitize_user(user: User): UserDetailResult { + delete (user as any).password; + return user; +} diff --git a/back-express/src/utils/error/response-error.model.ts b/back-express/src/utils/response/response-error.model.ts similarity index 100% rename from back-express/src/utils/error/response-error.model.ts rename to back-express/src/utils/response/response-error.model.ts diff --git a/back-express/src/utils/response/response-success.model.ts b/back-express/src/utils/response/response-success.model.ts new file mode 100644 index 0000000..894aded --- /dev/null +++ b/back-express/src/utils/response/response-success.model.ts @@ -0,0 +1,16 @@ +export class ResponseSuccess { + public data?: unknown; + public results?: unknown[]; + public count?: number; + + constructor(data: unknown) { + if (data instanceof Array) { + this.results = data; + this.count = data.length; + } else if (data instanceof Object) { + Object.assign(this, data); + } else { + this.data = data; + } + } +}