diff --git a/server/src/controllers/example.ts b/server/src/controllers/example.ts deleted file mode 100644 index 07470ee93f37ae46745dc002adf88a4cad77aeee..0000000000000000000000000000000000000000 --- a/server/src/controllers/example.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Response, Request } from "express"; -import example from '../services/example'; - -export const example1 = async (_: Request, res: Response): Promise<void> => { - try { - //res.status(200).json({"hello":"example1","database": "a"}); - res.json(await example.getTest()); - } catch (error) { - res.status(400).send("Bad Request"); - // res.status(500).send("Internal Server Error"); - } -}; - -export const example2 = async (_: Request, res: Response): Promise<void> => { - try { - res.status(200).json({"hello":"example2"}); - } catch (error) { - res.status(400).send("Bad Request"); - // res.status(500).send("Internal Server Error"); - } -}; diff --git a/server/src/controllers/postController.ts b/server/src/controllers/postController.ts new file mode 100644 index 0000000000000000000000000000000000000000..99fa90a1c77d0205dab5fc18c547dd1eed345236 --- /dev/null +++ b/server/src/controllers/postController.ts @@ -0,0 +1,80 @@ +import { Response, Request } from "express"; +import query from '../services/db_query'; +import express from 'express'; +const router = express.Router(); + +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 { + 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"); + } +}); + +/* ============================= 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).json(await query("SELECT * FROM post WHERE id=?;",[postId])); + } catch (error) { + response.status(400).send("Bad Request"); + } +}); + +export default router; diff --git a/server/src/index.ts b/server/src/index.ts index af9e008107f2380f7d5c447051530581b26d832d..8d875a0e68cc187dc3a09d3cdc5de1ad52772847 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -16,28 +16,8 @@ app.use(bodyParser.json()); // Configuring json response app.set("json spaces", 2); -app.use("/", routes); +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 fcdddaa5ef7d28fcbbd0bff7ac42e39033a97de3..49efb2c37e47305c88c0a75208a7f526e2746528 100644 --- a/server/src/routes/routes.ts +++ b/server/src/routes/routes.ts @@ -1,18 +1,11 @@ -import { example1, example2 } from '../controllers/example'; +//import { example1, example2 } from '../controllers/example'; +import postController from '../controllers/postController' import express from 'express'; const router = express.Router(); -router.get("/", (_, res) => { - res.send("Hello world!"); -}); -router.get('/test', (req, res) => { - console.log(req,res); - res.send("test!"); -}); +// Endpoints +router.use("/post", postController); -// routes go brrrrr! -router.get("/example1", example1); -router.get("/example1/example2", example2); export default router; diff --git a/server/src/services/db_query.ts b/server/src/services/db_query.ts new file mode 100644 index 0000000000000000000000000000000000000000..99152e1877114fac67424852de04c8c540eee459 --- /dev/null +++ b/server/src/services/db_query.ts @@ -0,0 +1,12 @@ +import db from '../services/db'; + +export default async function query(query: string, placeholder: {}){ + const data = await db.query(query,placeholder); + const meta = {page: 1}; + + return { + data, + meta + } +} + diff --git a/server/src/services/example.ts b/server/src/services/example.ts deleted file mode 100644 index 322c1e71aeae90657d87cce6e6e120d7b73c5afa..0000000000000000000000000000000000000000 --- a/server/src/services/example.ts +++ /dev/null @@ -1,15 +0,0 @@ -import db from '../services/db'; - -async function getTest(){ - const data = await db.query('SELECT * FROM test',""); - const meta = {page: 1}; - - return { - data, - meta - } -} - -export default { - getTest -}