From 13f6d34cefb3bc5e3ba65a959304d4465f0ee92a Mon Sep 17 00:00:00 2001 From: mhatvan Date: Wed, 4 Aug 2021 17:44:54 +0200 Subject: chore: improve dev setup - upgrade uuid, eslint, husky - improve .eslintrc.js and correct lint script - update uuid imports to conform to v8 - add .prettierrc.js for consistent formatting - file changes due to lint --fix --- app/Controllers/Http/DashboardController.js | 128 +++++++++----------- app/Controllers/Http/RecipeController.js | 1 - app/Controllers/Http/ServiceController.js | 175 ++++++++++++++-------------- app/Controllers/Http/StaticController.js | 1 - app/Controllers/Http/UserController.js | 150 ++++++++++++------------ app/Controllers/Http/WorkspaceController.js | 71 +++++------ 6 files changed, 253 insertions(+), 273 deletions(-) (limited to 'app/Controllers') diff --git a/app/Controllers/Http/DashboardController.js b/app/Controllers/Http/DashboardController.js index a588c75..84a88a9 100644 --- a/app/Controllers/Http/DashboardController.js +++ b/app/Controllers/Http/DashboardController.js @@ -1,40 +1,34 @@ - -const { - validateAll, -} = use('Validator'); +const { validateAll } = use('Validator'); const Service = use('App/Models/Service'); const Workspace = use('App/Models/Workspace'); const Persona = use('Persona'); const crypto = require('crypto'); -const uuid = require('uuid/v4'); +const { v4: uuid } = require('uuid'); class DashboardController { - async login({ - request, - response, - auth, - session, - }) { + async login({ request, response, auth, session }) { const validation = await validateAll(request.all(), { mail: 'required|email', password: 'required', }); if (validation.fails()) { - session.withErrors({ - type: 'danger', - message: 'Invalid mail or password', - }).flashExcept(['password']); + session + .withErrors({ + type: 'danger', + message: 'Invalid mail or password', + }) + .flashExcept(['password']); return response.redirect('back'); } - const { - mail, - password, - } = request.all(); + const { mail, password } = request.all(); - const hashedPassword = crypto.createHash('sha256').update(password).digest('base64'); + const hashedPassword = crypto + .createHash('sha256') + .update(password) + .digest('base64'); try { await auth.authenticator('session').attempt(mail, hashedPassword); @@ -48,10 +42,7 @@ class DashboardController { return response.redirect('/user/account'); } - async forgotPassword({ - request, - view, - }) { + async forgotPassword({ request, view }) { const validation = await validateAll(request.all(), { mail: 'required|email', }); @@ -63,7 +54,7 @@ class DashboardController { } try { await Persona.forgotPassword(request.input('mail')); - // eslint-disable-next-line no-empty + // eslint-disable-next-line no-empty } catch (e) {} return view.render('others.message', { @@ -72,10 +63,7 @@ class DashboardController { }); } - async resetPassword({ - request, - view, - }) { + async resetPassword({ request, view }) { const validation = await validateAll(request.all(), { password: 'required', password_confirmation: 'required', @@ -90,8 +78,14 @@ class DashboardController { } const payload = { - password: crypto.createHash('sha256').update(request.input('password')).digest('base64'), - password_confirmation: crypto.createHash('sha256').update(request.input('password_confirmation')).digest('base64'), + password: crypto + .createHash('sha256') + .update(request.input('password')) + .digest('base64'), + password_confirmation: crypto + .createHash('sha256') + .update(request.input('password_confirmation')) + .digest('base64'), }; try { @@ -109,11 +103,7 @@ class DashboardController { }); } - async account({ - auth, - view, - response, - }) { + async account({ auth, view, response }) { try { await auth.check(); } catch (error) { @@ -127,13 +117,7 @@ class DashboardController { }); } - async edit({ - auth, - request, - session, - view, - response, - }) { + async edit({ auth, request, session, view, response }) { let validation = await validateAll(request.all(), { username: 'required', email: 'required', @@ -174,7 +158,10 @@ class DashboardController { user.lastname = request.input('lastname'); user.email = request.input('email'); if (request.input('password')) { - const hashedPassword = crypto.createHash('sha256').update(request.input('password')).digest('base64'); + const hashedPassword = crypto + .createHash('sha256') + .update(request.input('password')) + .digest('base64'); user.password = hashedPassword; } user.save(); @@ -186,10 +173,7 @@ class DashboardController { }); } - async data({ - auth, - view, - }) { + async data({ auth, view }) { const general = auth.user; const services = (await auth.user.services().fetch()).toJSON(); const workspaces = (await auth.user.workspaces().fetch()).toJSON(); @@ -206,10 +190,7 @@ class DashboardController { }); } - async export({ - auth, - response, - }) { + async export({ auth, response }) { const general = auth.user; const services = (await auth.user.services().fetch()).toJSON(); const workspaces = (await auth.user.workspaces().fetch()).toJSON(); @@ -228,13 +209,7 @@ class DashboardController { .send(exportData); } - async import({ - auth, - request, - session, - response, - view, - }) { + async import({ auth, request, session, response, view }) { const validation = await validateAll(request.all(), { file: 'required', }); @@ -252,7 +227,10 @@ class DashboardController { } if (!file || !file.services || !file.workspaces) { - session.flash({ type: 'danger', message: 'Invalid Ferdi account file (2)' }); + session.flash({ + type: 'danger', + message: 'Invalid Ferdi account file (2)', + }); return response.redirect('back'); } @@ -265,9 +243,13 @@ class DashboardController { let serviceId; do { serviceId = uuid(); - } while ((await Service.query().where('serviceId', serviceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop + } while ( + (await Service.query().where('serviceId', serviceId).fetch()).rows + .length > 0 + ); // eslint-disable-line no-await-in-loop - await Service.create({ // eslint-disable-line no-await-in-loop + await Service.create({ + // eslint-disable-line no-await-in-loop userId: auth.user.id, serviceId, name: service.name, @@ -291,11 +273,17 @@ class DashboardController { let workspaceId; do { workspaceId = uuid(); - } while ((await Workspace.query().where('workspaceId', workspaceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop + } while ( + (await Workspace.query().where('workspaceId', workspaceId).fetch()) + .rows.length > 0 + ); // eslint-disable-line no-await-in-loop - const services = workspace.services.map((service) => serviceIdTranslation[service]); + const services = workspace.services.map( + service => serviceIdTranslation[service], + ); - await Workspace.create({ // eslint-disable-line no-await-in-loop + await Workspace.create({ + // eslint-disable-line no-await-in-loop userId: auth.user.id, workspaceId, name: workspace.name, @@ -318,18 +306,12 @@ class DashboardController { }); } - logout({ - auth, - response, - }) { + logout({ auth, response }) { auth.authenticator('session').logout(); return response.redirect('/user/login'); } - delete({ - auth, - response, - }) { + delete({ auth, response }) { auth.user.delete(); auth.authenticator('session').logout(); return response.redirect('/user/login'); diff --git a/app/Controllers/Http/RecipeController.js b/app/Controllers/Http/RecipeController.js index 9d58708..344548c 100644 --- a/app/Controllers/Http/RecipeController.js +++ b/app/Controllers/Http/RecipeController.js @@ -1,4 +1,3 @@ - const Recipe = use('App/Models/Recipe'); const Helpers = use('Helpers'); const Drive = use('Drive'); diff --git a/app/Controllers/Http/ServiceController.js b/app/Controllers/Http/ServiceController.js index 4aa611c..ef8b168 100644 --- a/app/Controllers/Http/ServiceController.js +++ b/app/Controllers/Http/ServiceController.js @@ -1,21 +1,15 @@ const Service = use('App/Models/Service'); -const { - validateAll, -} = use('Validator'); +const { validateAll } = use('Validator'); const Env = use('Env'); const Helpers = use('Helpers'); -const uuid = require('uuid/v4'); +const { v4: uuid } = require('uuid'); const path = require('path'); const fs = require('fs-extra'); class ServiceController { // Create a new service for user - async create({ - request, - response, - auth, - }) { + async create({ request, response, auth }) { try { await auth.getUser(); } catch (error) { @@ -41,7 +35,10 @@ class ServiceController { let serviceId; do { serviceId = uuid(); - } while ((await Service.query().where('serviceId', serviceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop + } while ( + (await Service.query().where('serviceId', serviceId).fetch()).rows + .length > 0 + ); // eslint-disable-line no-await-in-loop await Service.create({ userId: auth.user.id, @@ -73,10 +70,7 @@ class ServiceController { } // List all services a user has created - async list({ - response, - auth, - }) { + async list({ response, auth }) { try { await auth.getUser(); } catch (error) { @@ -85,8 +79,11 @@ class ServiceController { const services = (await auth.user.services().fetch()).rows; // Convert to array with all data Franz wants - const servicesArray = services.map((service) => { - const settings = typeof service.settings === 'string' ? JSON.parse(service.settings) : service.settings; + const servicesArray = services.map(service => { + const settings = + typeof service.settings === 'string' + ? JSON.parse(service.settings) + : service.settings; return { customRecipe: false, @@ -100,7 +97,9 @@ class ServiceController { spellcheckerLanguage: '', workspaces: [], ...settings, - iconUrl: settings.iconId ? `${Env.get('APP_URL')}/v1/icon/${settings.iconId}` : null, + iconUrl: settings.iconId + ? `${Env.get('APP_URL')}/v1/icon/${settings.iconId}` + : null, id: service.serviceId, name: service.name, recipeId: service.recipeId, @@ -111,12 +110,7 @@ class ServiceController { return response.send(servicesArray); } - async edit({ - request, - response, - auth, - params, - }) { + async edit({ request, response, auth, params }) { try { await auth.getUser(); } catch (error) { @@ -129,18 +123,22 @@ class ServiceController { types: ['image'], size: '2mb', }); - const { - id, - } = params; - const service = (await Service.query() - .where('serviceId', id) - .where('userId', auth.user.id).fetch()).rows[0]; - const settings = typeof service.settings === 'string' ? JSON.parse(service.settings) : service.settings; + const { id } = params; + const service = ( + await Service.query() + .where('serviceId', id) + .where('userId', auth.user.id) + .fetch() + ).rows[0]; + const settings = + typeof service.settings === 'string' + ? JSON.parse(service.settings) + : service.settings; let iconId; do { iconId = uuid() + uuid(); - // eslint-disable-next-line no-await-in-loop + // eslint-disable-next-line no-await-in-loop } while (await fs.exists(path.join(Helpers.tmpPath('uploads'), iconId))); iconId = `${iconId}.${icon.extname}`; @@ -157,17 +155,21 @@ class ServiceController { ...settings, ...{ iconId, - customIconVersion: settings && settings.customIconVersion ? settings.customIconVersion + 1 : 1, + customIconVersion: + settings && settings.customIconVersion + ? settings.customIconVersion + 1 + : 1, }, }; // Update data in database - await (Service.query() + await Service.query() .where('serviceId', id) - .where('userId', auth.user.id)).update({ - name: service.name, - settings: JSON.stringify(newSettings), - }); + .where('userId', auth.user.id) + .update({ + name: service.name, + settings: JSON.stringify(newSettings), + }); return response.send({ data: { @@ -182,32 +184,39 @@ class ServiceController { } // Update service info const data = request.all(); - const { - id, - } = params; + const { id } = params; // Get current settings from db - const serviceData = (await Service.query() - .where('serviceId', id) - .where('userId', auth.user.id).fetch()).rows[0]; + const serviceData = ( + await Service.query() + .where('serviceId', id) + .where('userId', auth.user.id) + .fetch() + ).rows[0]; const settings = { - ...typeof serviceData.settings === 'string' ? JSON.parse(serviceData.settings) : serviceData.settings, + ...(typeof serviceData.settings === 'string' + ? JSON.parse(serviceData.settings) + : serviceData.settings), ...data, }; // Update data in database - await (Service.query() + await Service.query() .where('serviceId', id) - .where('userId', auth.user.id)).update({ - name: data.name, - settings: JSON.stringify(settings), - }); + .where('userId', auth.user.id) + .update({ + name: data.name, + settings: JSON.stringify(settings), + }); // Get updated row - const service = (await Service.query() - .where('serviceId', id) - .where('userId', auth.user.id).fetch()).rows[0]; + const service = ( + await Service.query() + .where('serviceId', id) + .where('userId', auth.user.id) + .fetch() + ).rows[0]; return response.send({ data: { @@ -221,46 +230,42 @@ class ServiceController { }); } - async icon({ - params, - response, - }) { - const { - id, - } = params; + async icon({ params, response }) { + const { id } = params; const iconPath = path.join(Helpers.tmpPath('uploads'), id); - if (!await fs.exists(iconPath)) { + if (!(await fs.exists(iconPath))) { return response.status(404).send({ - status: 'Icon doesn\'t exist', + status: "Icon doesn't exist", }); } return response.download(iconPath); } - async reorder({ - request, - response, - auth, - }) { + async reorder({ request, response, auth }) { const data = request.all(); for (const service of Object.keys(data)) { // Get current settings from db - const serviceData = (await Service.query() // eslint-disable-line no-await-in-loop - .where('serviceId', service) - .where('userId', auth.user.id).fetch()).rows[0]; + const serviceData = ( + await Service.query() // eslint-disable-line no-await-in-loop + .where('serviceId', service) + .where('userId', auth.user.id) + .fetch() + ).rows[0]; const settings = { - ...typeof serviceData.settings === 'string' ? JSON.parse(serviceData.settings) : serviceData.settings, + ...(typeof serviceData.settings === 'string' + ? JSON.parse(serviceData.settings) + : serviceData.settings), order: data[service], }; // Update data in database - await (Service.query() // eslint-disable-line no-await-in-loop + await Service.query() // eslint-disable-line no-await-in-loop .where('serviceId', service) - .where('userId', auth.user.id)) + .where('userId', auth.user.id) .update({ settings: JSON.stringify(settings), }); @@ -269,8 +274,11 @@ class ServiceController { // Get new services const services = (await auth.user.services().fetch()).rows; // Convert to array with all data Franz wants - const servicesArray = services.map((service) => { - const settings = typeof service.settings === 'string' ? JSON.parse(service.settings) : service.settings; + const servicesArray = services.map(service => { + const settings = + typeof service.settings === 'string' + ? JSON.parse(service.settings) + : service.settings; return { customRecipe: false, @@ -284,7 +292,9 @@ class ServiceController { spellcheckerLanguage: '', workspaces: [], ...settings, - iconUrl: settings.iconId ? `${Env.get('APP_URL')}/v1/icon/${settings.iconId}` : null, + iconUrl: settings.iconId + ? `${Env.get('APP_URL')}/v1/icon/${settings.iconId}` + : null, id: service.serviceId, name: service.name, recipeId: service.recipeId, @@ -295,21 +305,16 @@ class ServiceController { return response.send(servicesArray); } - update({ - response, - }) { + update({ response }) { return response.send([]); } - async delete({ - params, - auth, - response, - }) { + async delete({ params, auth, response }) { // Update data in database - await (Service.query() + await Service.query() .where('serviceId', params.id) - .where('userId', auth.user.id)).delete(); + .where('userId', auth.user.id) + .delete(); return response.send({ message: 'Sucessfully deleted service', diff --git a/app/Controllers/Http/StaticController.js b/app/Controllers/Http/StaticController.js index 114e369..4e604df 100644 --- a/app/Controllers/Http/StaticController.js +++ b/app/Controllers/Http/StaticController.js @@ -1,4 +1,3 @@ - /** * Controller for routes with static responses */ diff --git a/app/Controllers/Http/UserController.js b/app/Controllers/Http/UserController.js index 0d768a9..99336cb 100644 --- a/app/Controllers/Http/UserController.js +++ b/app/Controllers/Http/UserController.js @@ -1,44 +1,41 @@ const User = use('App/Models/User'); const Service = use('App/Models/Service'); const Workspace = use('App/Models/Workspace'); -const { - validateAll, -} = use('Validator'); +const { validateAll } = use('Validator'); const Env = use('Env'); const atob = require('atob'); const btoa = require('btoa'); const fetch = require('node-fetch'); -const uuid = require('uuid/v4'); +const { v4: uuid } = require('uuid'); const crypto = require('crypto'); -const franzRequest = (route, method, auth) => new Promise((resolve, reject) => { - const base = 'https://api.franzinfra.com/v1/'; - const user = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Ferdi/5.3.0-beta.1 Chrome/69.0.3497.128 Electron/4.2.4 Safari/537.36'; +const franzRequest = (route, method, auth) => + new Promise((resolve, reject) => { + const base = 'https://api.franzinfra.com/v1/'; + const user = + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Ferdi/5.3.0-beta.1 Chrome/69.0.3497.128 Electron/4.2.4 Safari/537.36'; - try { - fetch(base + route, { - method, - headers: { - Authorization: `Bearer ${auth}`, - 'User-Agent': user, - }, - }) - .then((data) => data.json()) - .then((json) => resolve(json)); - } catch (e) { - reject(); - } -}); + try { + fetch(base + route, { + method, + headers: { + Authorization: `Bearer ${auth}`, + 'User-Agent': user, + }, + }) + .then(data => data.json()) + .then(json => resolve(json)); + } catch (e) { + reject(); + } + }); class UserController { // Register a new user - async signup({ - request, - response, - auth, - }) { - if (Env.get('IS_REGISTRATION_ENABLED') == 'false') { // eslint-disable-line eqeqeq + async signup({ request, response, auth }) { + if (Env.get('IS_REGISTRATION_ENABLED') == 'false') { + // eslint-disable-line eqeqeq return response.status(401).send({ message: 'Registration is disabled on this server', status: 401, @@ -89,11 +86,7 @@ class UserController { } // Login using an existing user - async login({ - request, - response, - auth, - }) { + async login({ request, response, auth }) { if (!request.header('Authorization')) { return response.status(401).send({ message: 'Please provide authorization', @@ -102,10 +95,12 @@ class UserController { } // Get auth data from auth token - const authHeader = atob(request.header('Authorization').replace('Basic ', '')).split(':'); + const authHeader = atob( + request.header('Authorization').replace('Basic ', ''), + ).split(':'); // Check if user with email exists - const user = (await User.query().where('email', authHeader[0]).first()); + const user = await User.query().where('email', authHeader[0]).first(); if (!user || !user.email) { return response.status(401).send({ message: 'User credentials not valid (Invalid mail)', @@ -133,17 +128,17 @@ class UserController { } // Return information about the current user - async me({ - response, - auth, - }) { + async me({ response, auth }) { try { await auth.getUser(); } catch (error) { response.send('Missing or invalid api token'); } - const settings = typeof auth.user.settings === 'string' ? JSON.parse(auth.user.settings) : auth.user.settings; + const settings = + typeof auth.user.settings === 'string' + ? JSON.parse(auth.user.settings) + : auth.user.settings; return response.send({ accountType: 'individual', @@ -158,15 +153,11 @@ class UserController { isSubscriptionOwner: true, lastname: auth.user.lastname, locale: 'en-US', - ...settings || {}, + ...(settings || {}), }); } - async updateMe({ - request, - response, - auth, - }) { + async updateMe({ request, response, auth }) { let settings = auth.user.settings || {}; if (typeof settings === 'string') { settings = JSON.parse(settings); @@ -195,21 +186,15 @@ class UserController { isSubscriptionOwner: true, lastname: auth.user.lastname, locale: 'en-US', - ...newSettings || {}, + ...(newSettings || {}), }, - status: [ - 'data-updated', - ], + status: ['data-updated'], }); } - - async import({ - request, - response, - view, - }) { - if (Env.get('IS_REGISTRATION_ENABLED') == 'false') { // eslint-disable-line eqeqeq + async import({ request, response, view }) { + if (Env.get('IS_REGISTRATION_ENABLED') == 'false') { + // eslint-disable-line eqeqeq return response.status(401).send({ message: 'Registration is disabled on this server', status: 401, @@ -222,7 +207,8 @@ class UserController { password: 'required', }); if (validation.fails()) { - let errorMessage = 'There was an error while trying to import your account:\n'; + let errorMessage = + 'There was an error while trying to import your account:\n'; for (const message of validation.messages()) { if (message.validation === 'required') { errorMessage += `- Please make sure to supply your ${message.field}\n`; @@ -238,14 +224,15 @@ class UserController { }); } - const { - email, - password, - } = request.all(); + const { email, password } = request.all(); - const hashedPassword = crypto.createHash('sha256').update(password).digest('base64'); + const hashedPassword = crypto + .createHash('sha256') + .update(password) + .digest('base64'); - if (Env.get('CONNECT_WITH_FRANZ') == 'false') { // eslint-disable-line eqeqeq + if (Env.get('CONNECT_WITH_FRANZ') == 'false') { + // eslint-disable-line eqeqeq await User.create({ email, password: hashedPassword, @@ -253,11 +240,14 @@ class UserController { lastname: 'Franz', }); - return response.send('Your account has been created but due to this server\'s configuration, we could not import your Franz account data.\n\nIf you are the server owner, please set CONNECT_WITH_FRANZ to true to enable account imports.'); + return response.send( + "Your account has been created but due to this server's configuration, we could not import your Franz account data.\n\nIf you are the server owner, please set CONNECT_WITH_FRANZ to true to enable account imports.", + ); } const base = 'https://api.franzinfra.com/v1/'; - const userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Ferdi/5.3.0-beta.1 Chrome/69.0.3497.128 Electron/4.2.4 Safari/537.36'; + const userAgent = + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Ferdi/5.3.0-beta.1 Chrome/69.0.3497.128 Electron/4.2.4 Safari/537.36'; // Try to get an authentication token let token; @@ -281,7 +271,8 @@ class UserController { const content = await rawResponse.json(); if (!content.message || content.message !== 'Successfully logged in') { - const errorMessage = 'Could not login into Franz with your supplied credentials. Please check and try again'; + const errorMessage = + 'Could not login into Franz with your supplied credentials. Please check and try again'; return response.status(401).send(errorMessage); } @@ -302,7 +293,8 @@ class UserController { return response.status(401).send(errorMessage); } if (!userInf) { - const errorMessage = 'Could not get your user info from Franz. Please check your credentials or try again later'; + const errorMessage = + 'Could not get your user info from Franz. Please check your credentials or try again later'; return response.status(401).send(errorMessage); } @@ -331,9 +323,13 @@ class UserController { let serviceId; do { serviceId = uuid(); - } while ((await Service.query().where('serviceId', serviceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop + } while ( + (await Service.query().where('serviceId', serviceId).fetch()).rows + .length > 0 + ); // eslint-disable-line no-await-in-loop - await Service.create({ // eslint-disable-line no-await-in-loop + await Service.create({ + // eslint-disable-line no-await-in-loop userId: user.id, serviceId, name: service.name, @@ -356,11 +352,17 @@ class UserController { let workspaceId; do { workspaceId = uuid(); - } while ((await Workspace.query().where('workspaceId', workspaceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop + } while ( + (await Workspace.query().where('workspaceId', workspaceId).fetch()) + .rows.length > 0 + ); // eslint-disable-line no-await-in-loop - const services = workspace.services.map((service) => serviceIdTranslation[service]); + const services = workspace.services.map( + service => serviceIdTranslation[service], + ); - await Workspace.create({ // eslint-disable-line no-await-in-loop + await Workspace.create({ + // eslint-disable-line no-await-in-loop userId: user.id, workspaceId, name: workspace.name, @@ -374,7 +376,9 @@ class UserController { return response.status(401).send(errorMessage); } - return response.send('Your account has been imported. You can now use your Franz account in Ferdi.'); + return response.send( + 'Your account has been imported. You can now use your Franz account in Ferdi.', + ); } } diff --git a/app/Controllers/Http/WorkspaceController.js b/app/Controllers/Http/WorkspaceController.js index 496912e..3734345 100644 --- a/app/Controllers/Http/WorkspaceController.js +++ b/app/Controllers/Http/WorkspaceController.js @@ -1,18 +1,11 @@ - const Workspace = use('App/Models/Workspace'); -const { - validateAll, -} = use('Validator'); +const { validateAll } = use('Validator'); -const uuid = require('uuid/v4'); +const { v4: uuid } = require('uuid'); class WorkspaceController { // Create a new workspace for user - async create({ - request, - response, - auth, - }) { + async create({ request, response, auth }) { try { await auth.getUser(); } catch (error) { @@ -37,7 +30,10 @@ class WorkspaceController { let workspaceId; do { workspaceId = uuid(); - } while ((await Workspace.query().where('workspaceId', workspaceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop + } while ( + (await Workspace.query().where('workspaceId', workspaceId).fetch()).rows + .length > 0 + ); // eslint-disable-line no-await-in-loop const order = (await auth.user.workspaces().fetch()).rows.length; @@ -59,12 +55,7 @@ class WorkspaceController { }); } - async edit({ - request, - response, - auth, - params, - }) { + async edit({ request, response, auth, params }) { try { await auth.getUser(); } catch (error) { @@ -85,22 +76,24 @@ class WorkspaceController { } const data = request.all(); - const { - id, - } = params; + const { id } = params; // Update data in database - await (Workspace.query() + await Workspace.query() .where('workspaceId', id) - .where('userId', auth.user.id)).update({ - name: data.name, - services: JSON.stringify(data.services), - }); + .where('userId', auth.user.id) + .update({ + name: data.name, + services: JSON.stringify(data.services), + }); // Get updated row - const workspace = (await Workspace.query() - .where('workspaceId', id) - .where('userId', auth.user.id).fetch()).rows[0]; + const workspace = ( + await Workspace.query() + .where('workspaceId', id) + .where('userId', auth.user.id) + .fetch() + ).rows[0]; return response.send({ id: workspace.workspaceId, @@ -136,14 +129,13 @@ class WorkspaceController { }); } - const { - id, - } = params; + const { id } = params; // Update data in database - await (Workspace.query() + await Workspace.query() .where('workspaceId', id) - .where('userId', auth.user.id)).delete(); + .where('userId', auth.user.id) + .delete(); return response.send({ message: 'Successfully deleted workspace', @@ -151,10 +143,7 @@ class WorkspaceController { } // List all workspaces a user has created - async list({ - response, - auth, - }) { + async list({ response, auth }) { try { await auth.getUser(); } catch (error) { @@ -165,16 +154,18 @@ class WorkspaceController { // Convert to array with all data Franz wants let workspacesArray = []; if (workspaces) { - workspacesArray = workspaces.map((workspace) => ({ + workspacesArray = workspaces.map(workspace => ({ id: workspace.workspaceId, name: workspace.name, order: workspace.order, - services: typeof workspace.services === 'string' ? JSON.parse(workspace.services) : workspace.services, + services: + typeof workspace.services === 'string' + ? JSON.parse(workspace.services) + : workspace.services, userId: auth.user.id, })); } - return response.send(workspacesArray); } } -- cgit v1.2.3-54-g00ecf