diff --git a/server/src/controllers/categoryController/index.ts b/server/src/controllers/categoryController/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..6d9d91a1d812ac99c00af092a9ed2928a80d678f --- /dev/null +++ b/server/src/controllers/categoryController/index.ts @@ -0,0 +1,65 @@ +import { Response, Request } from "express"; +import query from '../../services/db_query'; +import express from 'express'; +import Category from '../../models/category'; + +const router = express.Router(); +const category = new Category(); +// routes Kategori +// - hente alle kategorier (get) +// SELECT * FROM category; +// - hente et bestemt kategori (get) +// SELECT * FROM category WHERE categoryid = #num; +// - remove specific cateogry (post) +// INSERT INTO `jonnynl_tdt4140`.`category` (`categoryid`, `navn`) VALUES ('4', 'ad'); +// - add category (post) +// DELETE FROM `jonnynl_tdt4140`.`category` WHERE (`categoryid` = '3'); + +/* ============================= CREATE ============================= */ +// Create category `/api/category/` +router.route('/').post(async (request: Request, response: Response) => { + const {category} = request.body; + try { + const input = (` INSERT INTO category(navn) VALUES (?);`) + return response.status(200).json( + await query(input,[category]) + ); + } catch (error) { + return response.status(400).send("Bad Request"); + } +}); + +/* ============================= READ ============================= */ +// Get category `/api/category/` +router.route('/').get(async (_: Request, response: Response) => { + try { + response.status(200).json(await query("SELECT * FROM category;","")); + } catch (error) { + response.status(400).send("Bad Request"); + } +}); + +// Get category from id `/api/category/:categoryid` +router.route('/:categoryid').get(async (request: Request, response: Response) => { + const categoryid = request.params.categoryid; + try { + response.status(200).json(await query("SELECT * FROM category WHERE categoryid = ?",[categoryid])); + } catch (error) { + response.status(400).send("Bad Request"); + } +}); + +/* ============================= UPDATE ============================= */ + +/* ============================= DELETE ============================= */ +// remove category with id `/api/category/#categoryid` +router.route('/').delete(async (request: Request, response: Response) => { + const categoryid = request.params.categoryid; + try { + response.status(200).json(await query("DELETE FROM category WHERE categoryid = ?",[categoryid])); + } catch (error) { + response.status(400).send("Bad Request"); + } +}); + +export default router; \ No newline at end of file diff --git a/server/src/controllers/postController.ts b/server/src/controllers/postcontroller/index.ts similarity index 74% rename from server/src/controllers/postController.ts rename to server/src/controllers/postcontroller/index.ts index 99fa90a1c77d0205dab5fc18c547dd1eed345236..c437f2c608dd9d3087ecc1099a3544a4585f5a7b 100644 --- a/server/src/controllers/postController.ts +++ b/server/src/controllers/postcontroller/index.ts @@ -1,16 +1,12 @@ import { Response, Request } from "express"; -import query from '../services/db_query'; +import query from '../../services/db_query'; import express from 'express'; +import IPost from '../../models/post'; +import Category from '../../models/category'; + const router = express.Router(); +const category = new Category(); -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"}' @@ -39,7 +35,11 @@ router.route('/').post(async (request: Request, response: Response) => { // Get all posts `/api/post/` router.route('/').get(async (_: Request, response: Response) => { try { - response.status(200).json(await query("SELECT * FROM post;","")); + //response.status(200).json(await query("SELECT * FROM post;","")); + const input = `SELECT p.id, p.title, p.description, p.timestamp, p.owner, category.navn, p.imageUrl + FROM post as p + INNER JOIN category ON category.categoryid = p.categoryid;` + response.status(200).json(await query(input,"")); } catch (error) { response.status(400).send("Bad Request"); } @@ -49,7 +49,11 @@ router.route('/').get(async (_: Request, response: Response) => { 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])); + //response.status(200).json(await query("SELECT * FROM post WHERE id=?;",[postId])); + const input = `SELECT p.id, p.title, p.description, p.timestamp, p.owner, category.navn, p.imageUrl + FROM post as p + INNER JOIN category ON category.categoryid = p.categoryid WHERE p.id=?;` + response.status(200).json(await query(input,[postId])); } catch (error) { response.status(400).send("Bad Request"); } diff --git a/server/src/index.ts b/server/src/index.ts index 8d875a0e68cc187dc3a09d3cdc5de1ad52772847..d4ba8b032e3765eeacf7f072c4be828e38f69275 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -20,4 +20,4 @@ app.use("/api", routes); app.listen(port, () => { console.log(`Listening on port ${port}!`) -}); +}); \ No newline at end of file diff --git a/server/src/models/category.ts b/server/src/models/category.ts new file mode 100644 index 0000000000000000000000000000000000000000..be930c47a7b34d318dc14240ab7ffcb3534039ea --- /dev/null +++ b/server/src/models/category.ts @@ -0,0 +1,26 @@ +class Category { + private list: string[] = [ + + ] + + // add a category to the category list + addToList(category: string) { + this.list.push(category); + } + + // remove a category from the category list + removeFromList(category: string) { + try { + delete this.list[this.list.indexOf(category)]; + } catch(e) { + throw new Error("Couldnt delete category"); + } + } + + // return the list of categories. + getList() { + return this.list; + } +} + +export default Category; \ No newline at end of file diff --git a/server/src/models/post.ts b/server/src/models/post.ts new file mode 100644 index 0000000000000000000000000000000000000000..146bf71067332d191d975514b24837200d3d3706 --- /dev/null +++ b/server/src/models/post.ts @@ -0,0 +1,12 @@ +// Post modell, med typene: +interface IPost { + title: string; + description: string; + timestamp: number; + owner: string; + category: string; + imageUrl: string; +} + +// Eksporterer IPost til bruk i andre filer. +export default IPost; \ No newline at end of file diff --git a/server/src/routes/routes.ts b/server/src/routes/routes.ts index 49efb2c37e47305c88c0a75208a7f526e2746528..aec88f548f1ea10d2c42f362a6d057ba586f0fdd 100644 --- a/server/src/routes/routes.ts +++ b/server/src/routes/routes.ts @@ -1,11 +1,12 @@ -//import { example1, example2 } from '../controllers/example'; -import postController from '../controllers/postController' +import postController from '../controllers/postcontroller'; +import categoryController from '../controllers/categoryController'; import express from 'express'; const router = express.Router(); // Endpoints -router.use("/post", postController); +router.use("/post", postController); +router.use("/category", categoryController); export default router;