From 7584d2d7a7110aef0331ebfa178b2295842c59fa Mon Sep 17 00:00:00 2001 From: MCMXC <16797721+mcmxcdev@users.noreply.github.com> Date: Sat, 10 Feb 2024 18:19:14 -0700 Subject: refactor: project maintenance - work in progress --- app/Controllers/Http/WorkspaceController.ts | 98 +++++++++++++---------------- 1 file changed, 45 insertions(+), 53 deletions(-) (limited to 'app/Controllers/Http/WorkspaceController.ts') diff --git a/app/Controllers/Http/WorkspaceController.ts b/app/Controllers/Http/WorkspaceController.ts index 70af343..a2bc54e 100644 --- a/app/Controllers/Http/WorkspaceController.ts +++ b/app/Controllers/Http/WorkspaceController.ts @@ -1,53 +1,53 @@ -import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; -import { validator, schema } from '@ioc:Adonis/Core/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 }: HttpContextContract) { + 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 }: HttpContextContract) { + 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,62 +110,54 @@ export default class WorkspaceController { order: workspace.order, services: data.services, userId: user.id, - }); + }) } - public async delete({ - request, - response, - auth, - params, - }: HttpContextContract) { + 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 }: HttpContextContract) { + 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) => ({ @@ -177,9 +169,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