diff --git a/server/src/controllers/userController/index.ts b/server/src/controllers/userController/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..8bc393a47ed75a0864a3ffda17be3450aba44f67 --- /dev/null +++ b/server/src/controllers/userController/index.ts @@ -0,0 +1,74 @@ +import { Response, Request } from "express"; +import query from '../../services/db_query'; +import express from 'express'; +import IUser from '../../models/user'; + +const router = express.Router(); +/* ============================= CREATE ============================= */ +// Get all users `/api/user/` +router.route('/').post(async (request: Request, response: Response) => { + const {username, email, password, create_time} = request.body; + try { + const user: IUser = { + "username": username, + "email": email, + "password": password, + }; + if (Object.values(user).filter(p => p == undefined).length > 0) return response.status(500).send("Error"); + const input = (`INSERT INTO user(username, email, password) VALUES (?,?,?)`) + return response.status(200).json( + await query(input,Object.values(user)) + ); + } catch (error) { + return response.status(400).send("Bad Request"); + } +}); +/* ============================= READ ============================= */ +// Get all users `/api/user/` +router.route('/').get(async (_: Request, response: Response) => { + try { + const input = "SELECT * FROM user;" + response.status(200).json(await query(input,"")); + } catch (error) { + response.status(400).send("Bad Request"); + } +}); + +// Get post with id `/api/user/:id` +router.route('/:userId').get(async (request: Request, response: Response) => { + const userId = request.params.userId; + try { + const input = `SELECT * FROM user WHERE userId=?;` + response.status(200).json(await query(input,[userId])); + } catch (error) { + response.status(400).send("Bad Request"); + } +}); + +/* ============================= UPDATE ============================= */ +// Update user from id `/api/user/:id` +router.route('/:userId').put(async (request: Request, response: Response) => { + const userId = request.params.userId; + const {username, email, password} = request.body; + try { + const input = `UPDATE user SET username=?, email=?, password=? WHERE userId=?);`; + response.status(200).json(await query(input,[username, email, password, userId])); + } catch (error) { + response.status(400).send("Bad Request"); + } +}); + +/* ============================= DELETE ============================= */ +// Delete user from id `/api/user/:id` +router.route('/:userId').delete(async (request: Request, response: Response) => { + const userId = request.params.userId; + try { + const input = `DELETE FROM user WHERE (userId=?);`; + response.status(200).json(await query(input,[userId])); + } catch (error) { + response.status(400).send("Bad Request"); + } +}); + +export default router; + diff --git a/server/src/models/post.ts b/server/src/models/post.ts index 146bf71067332d191d975514b24837200d3d3706..1a5a4cc8f8d6a513ba2e37b2c85bacd4fca3a257 100644 --- a/server/src/models/post.ts +++ b/server/src/models/post.ts @@ -9,4 +9,4 @@ interface IPost { } // Eksporterer IPost til bruk i andre filer. -export default IPost; \ No newline at end of file +export default IPost; diff --git a/server/src/models/user.ts b/server/src/models/user.ts new file mode 100644 index 0000000000000000000000000000000000000000..1833069dcc78a1462b0d38214fcd633247a4acdc --- /dev/null +++ b/server/src/models/user.ts @@ -0,0 +1,21 @@ +// Interface for the User object, taken from the database +interface IUser{ + userId?: number; + username: string; + email: string; + password: string; + create_time?: Date; +} + +export default IUser; + + + + + + + + + + + diff --git a/server/src/routes/routes.ts b/server/src/routes/routes.ts index aec88f548f1ea10d2c42f362a6d057ba586f0fdd..a47eab9f6e83d0f91a17059de6635d26aae974e5 100644 --- a/server/src/routes/routes.ts +++ b/server/src/routes/routes.ts @@ -1,5 +1,6 @@ import postController from '../controllers/postcontroller'; import categoryController from '../controllers/categoryController'; +import userController from '../controllers/userController'; import express from 'express'; const router = express.Router(); @@ -7,6 +8,6 @@ const router = express.Router(); // Endpoints router.use("/post", postController); router.use("/category", categoryController); +router.use("/user", userController); - -export default router; +export default router; \ No newline at end of file