68 lines
1.7 KiB
TypeScript
68 lines
1.7 KiB
TypeScript
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
|
|
import SetSettingsValidator from 'App/Validators/SetSettingsValidator'
|
|
import Logger from '@ioc:Adonis/Core/Logger'
|
|
|
|
type ResultSetting = {
|
|
key: string,
|
|
value: string
|
|
}
|
|
|
|
export default class SettingsController {
|
|
|
|
public async list({ auth }: HttpContextContract ): Promise<ResultSetting[]> {
|
|
|
|
try {
|
|
const result = await auth.user.related('settings').query().select(['key', 'value'])
|
|
|
|
return result
|
|
}
|
|
catch(error) {
|
|
return error
|
|
}
|
|
|
|
}
|
|
|
|
public async get({params, auth, response}: HttpContextContract): Promise<ResultSetting | null> {
|
|
|
|
const key = params.key
|
|
|
|
const result = await auth.user.related('settings').query().select(['key', 'value']).where('key', key).firstOrFail()
|
|
|
|
return result
|
|
}
|
|
|
|
/**
|
|
* Expects:
|
|
* {
|
|
* settings: [
|
|
* {key: 'key1', value: 'value1'},
|
|
* ]
|
|
* }
|
|
*/
|
|
public async set({request, auth}: HttpContextContract): Promise<'ok'> {
|
|
|
|
try {
|
|
const payload = await request.validate(SetSettingsValidator)
|
|
|
|
await auth.user.related('settings').updateOrCreateMany(payload.settings, 'key')
|
|
|
|
return "ok"
|
|
}
|
|
catch(error){
|
|
return error
|
|
}
|
|
|
|
}
|
|
|
|
public async delete({ params, auth }: HttpContextContract): Promise<(0 | 1)[]> {
|
|
const key = params.key
|
|
|
|
try {
|
|
return await auth.user.related('settings').query().where('key', key).delete()
|
|
}
|
|
catch(error){
|
|
return error
|
|
}
|
|
}
|
|
}
|