From 2ad43db1ed01fe0b5b116ddda1a5177c9f62c130 Mon Sep 17 00:00:00 2001 From: MCMXC <16797721+mcmxcdev@users.noreply.github.com> Date: Sat, 10 Feb 2024 18:37:40 -0700 Subject: updates --- app/Controllers/Http/WorkspaceController.ts | 85 +++++++++++++++-------------- 1 file changed, 44 insertions(+), 41 deletions(-) (limited to 'app/Controllers/Http/WorkspaceController.ts') diff --git a/app/Controllers/Http/WorkspaceController.ts b/app/Controllers/Http/WorkspaceController.ts index a2bc54e..6cecf69 100644 --- a/app/Controllers/Http/WorkspaceController.ts +++ b/app/Controllers/Http/WorkspaceController.ts @@ -1,53 +1,53 @@ -import type { HttpContext } from '@adonisjs/core/http' -import { validator, schema } from '@adonisjs/validator' -import Workspace from '#app/Models/Workspace' -import { v4 as uuid } from 'uuid' +import type { HttpContext } from '@adonisjs/core/http'; +import { validator, schema } from '@adonisjs/validator'; +import Workspace from '#app/Models/Workspace'; +import { v4 as uuid } from 'uuid'; const createSchema = schema.create({ name: schema.string(), -}) +}); const editSchema = schema.create({ name: schema.string(), -}) +}); const deleteSchema = schema.create({ id: schema.string(), -}) +}); export default class WorkspaceController { // Create a new workspace for user public async create({ request, response, auth }: HttpContext) { // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'. - const user = auth.user ?? request.user + const user = auth.user ?? request.user; if (!user) { - return response.unauthorized('Missing or invalid api token') + return response.unauthorized('Missing or invalid api token'); } // Validate user input - let data + let data; try { - data = await request.validate({ schema: createSchema }) + data = await request.validate({ schema: createSchema }); } catch (error) { return response.status(401).send({ message: 'Invalid POST arguments', messages: error.messages, status: 401, - }) + }); } // Get new, unused uuid - let workspaceId + let workspaceId; do { - workspaceId = uuid() + workspaceId = uuid(); } while ( // eslint-disable-next-line unicorn/no-await-expression-member, no-await-in-loop (await Workspace.query().where('workspaceId', workspaceId)).length > 0 - ) + ); // eslint-disable-next-line unicorn/no-await-expression-member - const order = (await user.related('workspaces').query()).length + const order = (await user.related('workspaces').query()).length; await Workspace.create({ userId: user.id, @@ -56,7 +56,7 @@ export default class WorkspaceController { order, services: JSON.stringify([]), data: JSON.stringify(data), - }) + }); return response.send({ userId: user.id, @@ -64,30 +64,30 @@ export default class WorkspaceController { id: workspaceId, order, workspaces: [], - }) + }); } public async edit({ request, response, auth, params }: HttpContext) { // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'. - const user = auth.user ?? request.user + const user = auth.user ?? request.user; if (!user) { - return response.unauthorized('Missing or invalid api token') + return response.unauthorized('Missing or invalid api token'); } // Validate user input try { - await request.validate({ schema: editSchema }) + await request.validate({ schema: editSchema }); } catch (error) { return response.status(401).send({ message: 'Invalid POST arguments', messages: error.messages, status: 401, - }) + }); } - const data = request.all() - const { id } = params + const data = request.all(); + const { id } = params; // Update data in database await Workspace.query() @@ -96,13 +96,13 @@ export default class WorkspaceController { .update({ name: data.name, services: JSON.stringify(data.services), - }) + }); // Get updated row const workspace = await Workspace.query() .where('workspaceId', id) .where('userId', user.id) - .firstOrFail() + .firstOrFail(); return response.send({ id: workspace.workspaceId, @@ -110,54 +110,57 @@ export default class WorkspaceController { order: workspace.order, services: data.services, userId: user.id, - }) + }); } public async delete({ request, response, auth, params }: HttpContext) { // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'. - const user = auth.user ?? request.user + const user = auth.user ?? request.user; if (!user) { - return response.unauthorized('Missing or invalid api token') + return response.unauthorized('Missing or invalid api token'); } // Validate user input - let data + let data; try { data = await validator.validate({ data: params, schema: deleteSchema, - }) + }); } catch (error) { return response.status(401).send({ message: 'Invalid arguments', messages: error.messages, status: 401, - }) + }); } - const { id } = data + const { id } = data; // Update data in database - await Workspace.query().where('workspaceId', id).where('userId', user.id).delete() + await Workspace.query() + .where('workspaceId', id) + .where('userId', user.id) + .delete(); return response.send({ message: 'Successfully deleted workspace', - }) + }); } // List all workspaces a user has created public async list({ request, response, auth }: HttpContext) { // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'. - const user = auth.user ?? request.user + const user = auth.user ?? request.user; if (!user) { - return response.unauthorized('Missing or invalid api token') + return response.unauthorized('Missing or invalid api token'); } - const workspaces = await user.related('workspaces').query() + const workspaces = await user.related('workspaces').query(); // Convert to array with all data Franz wants - let workspacesArray: object[] = [] + let workspacesArray: object[] = []; if (workspaces) { // eslint-disable-next-line @typescript-eslint/no-explicit-any workspacesArray = workspaces.map((workspace: any) => ({ @@ -169,9 +172,9 @@ export default class WorkspaceController { ? JSON.parse(workspace.services) : workspace.services, userId: user.id, - })) + })); } - return response.send(workspacesArray) + return response.send(workspacesArray); } } -- cgit v1.2.3-70-g09d2