From eea9123bf24f7d2cb6b862692d3ab3e1eb19096c Mon Sep 17 00:00:00 2001 From: Ricardo Rocha Date: Tue, 24 Jan 2023 23:02:16 +0000 Subject: [PATCH 1/2] 24/01/2023 Refactored the new external api /item endpoint to accept requests and save the items into the db. --- src/App/Http/Controllers/ApiController.ts | 27 ++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/App/Http/Controllers/ApiController.ts b/src/App/Http/Controllers/ApiController.ts index 68a9d0f..1316562 100644 --- a/src/App/Http/Controllers/ApiController.ts +++ b/src/App/Http/Controllers/ApiController.ts @@ -1,7 +1,16 @@ -import { context, controller, Controller, middleware, post, response } from '@envuso/core/Routing'; +import { + context, + controller, + Controller, + middleware, + post, + request, + response, +} from '@envuso/core/Routing'; import { ApiMiddleware } from '../Middleware/ApiMiddleware'; import { ApiKey } from '../../Models/ApiKey'; import { UnauthorisedException } from '../../Exceptions/UnauthorisedException'; +import { Item } from '../../Models/Item'; @controller('/api') @middleware(new ApiMiddleware()) @@ -9,6 +18,7 @@ export class ApiController extends Controller { @post('/item') async postItem() { const ctx = context(); + const payload = request().body(); const user = await ApiKey.query().where({ key: ctx.getAdditional('api-key') }).first(); @@ -16,6 +26,21 @@ export class ApiController extends Controller { throw new UnauthorisedException('invalid api key'); } + const item = new Item(); + // @ts-ignore + item.list = '--list-id--'; + // @ts-ignore + item.title = payload.title; + // @ts-ignore + item.price = parseFloat(payload.price); + // @ts-ignore + item.image = payload.image; + item.createdAt = new Date(); + item.user = user.user.toString(); + // @ts-ignore + item.url = payload.url; + await item.save(); + return response().setResponse({ user }, 200); } } From a1e15f04e7da63e274f7c98e7f08f956c0f3f4d4 Mon Sep 17 00:00:00 2001 From: Ricardo Rocha Date: Thu, 26 Jan 2023 22:21:29 +0000 Subject: [PATCH 2/2] * added an external api endpoint to fetch a user's lists; --- src/App/Http/Controllers/ApiController.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/App/Http/Controllers/ApiController.ts b/src/App/Http/Controllers/ApiController.ts index 1316562..c485f4e 100644 --- a/src/App/Http/Controllers/ApiController.ts +++ b/src/App/Http/Controllers/ApiController.ts @@ -2,6 +2,7 @@ import { context, controller, Controller, + get, middleware, post, request, @@ -11,6 +12,7 @@ import { ApiMiddleware } from '../Middleware/ApiMiddleware'; import { ApiKey } from '../../Models/ApiKey'; import { UnauthorisedException } from '../../Exceptions/UnauthorisedException'; import { Item } from '../../Models/Item'; +import { List } from '../../Models/List'; @controller('/api') @middleware(new ApiMiddleware()) @@ -28,7 +30,7 @@ export class ApiController extends Controller { const item = new Item(); // @ts-ignore - item.list = '--list-id--'; + item.list = payload.list; // @ts-ignore item.title = payload.title; // @ts-ignore @@ -43,4 +45,19 @@ export class ApiController extends Controller { return response().setResponse({ user }, 200); } + + @get('/lists') + async getLists() { + const ctx = context(); + + const user = await ApiKey.query().where({ key: ctx.getAdditional('api-key') }).first(); + + if (!user) { + throw new UnauthorisedException('invalid api key'); + } + + const lists = await List.get({ user: user.user }); + + return response().setResponse(lists, 200); + } }