diff --git a/server/src/controllers/postController.ts b/server/src/controllers/postController.ts index 93622fd7c20720544f6e081da58c0d88efbc65a3..99fa90a1c77d0205dab5fc18c547dd1eed345236 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 209a2b7c5ac7d56576b5fa32364491ec11808124..8d875a0e68cc187dc3a09d3cdc5de1ad52772847 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 9146195fee7395e24593fc0f43c9fa6807fbb06a..49efb2c37e47305c88c0a75208a7f526e2746528 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 009370fc24583276d21079d63b5c3b37044ced07..99152e1877114fac67424852de04c8c540eee459 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 {