From 7c04323e50b9ea6a08fd4ded968e3d4f63b0ed71 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 8 Oct 2021 15:01:50 +0200 Subject: [PATCH] Add States --- app/Controllers/Http/StatesController.ts | 42 +++++++++++++++++++ .../states/StateDevelopingValidator.ts | 15 +++++++ .../states/StateSleepingValidator.ts | 15 +++++++ 3 files changed, 72 insertions(+) create mode 100644 app/Controllers/Http/StatesController.ts create mode 100644 app/Validators/states/StateDevelopingValidator.ts create mode 100644 app/Validators/states/StateSleepingValidator.ts diff --git a/app/Controllers/Http/StatesController.ts b/app/Controllers/Http/StatesController.ts new file mode 100644 index 0000000..2913a07 --- /dev/null +++ b/app/Controllers/Http/StatesController.ts @@ -0,0 +1,42 @@ +import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; +import Redis from "@ioc:Adonis/Addons/Redis"; +import StateSleepingValidator from "App/Validators/states/StateSleepingValidator"; +import StateDevelopingValidator from "App/Validators/states/StateDevelopingValidator"; + +export default class StatesController { + + // Listening Music + + public async index ({ response }: HttpContextContract) { + const sleeping = this.formatValue(Boolean(await Redis.get('states:sleeping')) || false) + const developing = this.formatValue(Boolean(await Redis.get('states:developing')) || false) + return response.status(200).send({ + sleeping, + developing, + listening_music: "Soon" + }) + } + + public async setSleeping ({ request, response }: HttpContextContract) { + const { value } = await request.validate(StateSleepingValidator) + await Redis.set('states:sleeping', String(value)) + return response.status(200).send({ + message: 'State was successfully set!', + value: this.formatValue(value) + }) + } + + public async setDeveloping ({ request, response }: HttpContextContract) { + const { value } = await request.validate(StateDevelopingValidator) + await Redis.set('states:developing', String(value)) + return response.status(200).send({ + message: 'State was successfully set!', + value: this.formatValue(value) + }) + } + + public formatValue (value: boolean): string { + return value ? 'Yes' : 'No' + } + +} diff --git a/app/Validators/states/StateDevelopingValidator.ts b/app/Validators/states/StateDevelopingValidator.ts new file mode 100644 index 0000000..c8d5519 --- /dev/null +++ b/app/Validators/states/StateDevelopingValidator.ts @@ -0,0 +1,15 @@ +import { schema } from '@ioc:Adonis/Core/Validator' +import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' + +export default class StateDevelopingValidator { + constructor (protected ctx: HttpContextContract) { + } + + public schema = schema.create({ + value: schema.boolean() + }) + + public messages = { + required: 'The field {{field}} is required', + } +} diff --git a/app/Validators/states/StateSleepingValidator.ts b/app/Validators/states/StateSleepingValidator.ts new file mode 100644 index 0000000..94c5272 --- /dev/null +++ b/app/Validators/states/StateSleepingValidator.ts @@ -0,0 +1,15 @@ +import { schema } from '@ioc:Adonis/Core/Validator' +import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' + +export default class StateSleepingValidator { + constructor (protected ctx: HttpContextContract) { + } + + public schema = schema.create({ + value: schema.boolean() + }) + + public messages = { + required: 'The field {{field}} is required', + } +}