From 8aef6f3186bf4840d3f1681cf41f352f1d7c84d8 Mon Sep 17 00:00:00 2001 From: shirajuki <shirajuki00@gmail.com> Date: Wed, 10 Feb 2021 16:44:28 +0100 Subject: [PATCH] Issue: finish set up routes for post (#2) --- server/src/controllers/postController.ts | 68 +++++++++++++++++++++--- server/src/index.ts | 20 ------- server/src/routes/routes.ts | 4 -- server/src/services/db_query.ts | 4 +- 4 files changed, 64 insertions(+), 32 deletions(-) diff --git a/server/src/controllers/postController.ts b/server/src/controllers/postController.ts index 93622fd..99fa90a 100644 --- a/server/src/controllers/postController.ts +++ b/server/src/controllers/postController.ts @@ -3,19 +3,75 @@ import query from '../services/db_query'; import express from 'express'; const router = express.Router(); -router.route('/sendPost').get(async (request: Request, response: Response) => { +interface IPost { + title: string; + description: string; + timestamp: number; + owner: string; + category: string; + imageUrl: string; +} +/* ============================= CREATE ============================= */ +// Create posts `/api/post/` +//'{"title":"test3","description":"test3","timestamp":123123,"owner":"test3","category":"test3","imageUrl":"test3"}' +router.route('/').post(async (request: Request, response: Response) => { + const {title, description, timestamp, owner, category, imageUrl} = request.body; try { - response.status(200).send("a"); - // response.status(200).json(await query("SELECT * FROM test;")); + const post: IPost = { + "title": title, + "description": description, + "timestamp": timestamp, + "owner": owner, + "category": category, + "imageUrl": imageUrl + }; + if (Object.values(post).filter(p => p == undefined).length > 0) return response.status(500).send("Error"); + const input = (`INSERT INTO post(title, description, timestamp, owner, category, imageUrl) VALUES (?,?,?,?,?,?)`) + return response.status(200).json( + await query(input,Object.values(post)) + ); + } catch (error) { + return response.status(400).send("Bad Request"); + } +}); + +/* ============================= READ ============================= */ +// Get all posts `/api/post/` +router.route('/').get(async (_: Request, response: Response) => { + try { + response.status(200).json(await query("SELECT * FROM post;","")); + } catch (error) { + response.status(400).send("Bad Request"); + } +}); + +// Get post with id `/api/post/:id` +router.route('/:id').get(async (request: Request, response: Response) => { + const postId = request.params.id; + try { + response.status(200).json(await query("SELECT * FROM post WHERE id=?;",[postId])); + } catch (error) { + response.status(400).send("Bad Request"); + } +}); + +/* ============================= UPDATE ============================= */ +// Edit post with id `/api/post/:id` +router.route('/:id').put(async (request: Request, response: Response) => { + const postId = request.params.id; + try { + response.status(200).json(await query("SELECT * FROM post WHERE id=?;",[postId])); } catch (error) { response.status(400).send("Bad Request"); } }); -router.route('/editPost').get(async (request: Request, response: Response) => { +/* ============================= DELETE ============================= */ +// Remove post with id `/api/post/:id` +router.route('/:id').delete(async (request: Request, response: Response) => { + const postId = request.params.id; try { - response.status(200).send("a"); - //response.status(200).json(await example.getTest()); + response.status(200).json(await query("SELECT * FROM post WHERE id=?;",[postId])); } catch (error) { response.status(400).send("Bad Request"); } diff --git a/server/src/index.ts b/server/src/index.ts index 209a2b7..8d875a0 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -18,26 +18,6 @@ app.set("json spaces", 2); app.use("/api", routes); -/* -// create the connection to database -const connection = mysql.createConnection({ - host: 'mysql.stud.ntnu.no', - user: 'jonnynl_tdt4140', - password: 'jonny123', - database: 'jonnynl_tdt4140', - connectTimeout: 10000 -}); - -// simple query -connection.query( - 'SELECT * from test', - function(err , results, fields) { - console.log(results); // results contains rows returned by server - // console.log(fields); // fields contains extra meta data about results, if available - // console.log(err); - } -); -*/ app.listen(port, () => { console.log(`Listening on port ${port}!`) }); diff --git a/server/src/routes/routes.ts b/server/src/routes/routes.ts index 9146195..49efb2c 100644 --- a/server/src/routes/routes.ts +++ b/server/src/routes/routes.ts @@ -4,10 +4,6 @@ import express from 'express'; const router = express.Router(); -// routes go brrrrr! -//router.get("/example1", example1); -//router.get("/example1/example2", example2); - // Endpoints router.use("/post", postController); diff --git a/server/src/services/db_query.ts b/server/src/services/db_query.ts index 009370f..99152e1 100644 --- a/server/src/services/db_query.ts +++ b/server/src/services/db_query.ts @@ -1,7 +1,7 @@ import db from '../services/db'; -export default async function query(query: string){ - const data = await db.query(query,""); +export default async function query(query: string, placeholder: {}){ + const data = await db.query(query,placeholder); const meta = {page: 1}; return { -- GitLab