Add maintenance mode and update announce

This commit is contained in:
2021-08-23 14:38:14 +02:00
parent bbebdf681d
commit 0c70b340a9
7 changed files with 97 additions and 29 deletions

View File

@@ -1,6 +1,5 @@
import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext";
import Announce from "App/Models/Announce";
import AnnounceStoreValidator from "App/Validators/announce/AnnounceStoreValidator";
import AnnounceUpdateValidator from "App/Validators/announce/AnnounceUpdateValidator";
import getTranslation from "App/Tasks/getTranslation";
import File from "App/Models/File";
@@ -19,19 +18,6 @@ export default class AnnouncesController {
})
}
public async store ({ request, response }: HttpContextContract) {
const data = await request.validate(AnnounceStoreValidator)
const announce = await Announce.create(data)
await announce.related('message').associate(await getTranslation(data.code))
const cover = await File.findBy('label', data.cover)
if (cover) await announce.related('cover').associate(cover)
return response.status(200).send({
announce: announce
})
}
public async show ({ params, response }: HttpContextContract) {
const announce = await Announce.findOrFail(params.id)
announce.load('message')
@@ -59,12 +45,4 @@ export default class AnnouncesController {
})
}
public async destroy ({ response, params }: HttpContextContract) {
const announce = await Announce.findOrFail(params.id)
await announce.delete()
return response.status(200).send({
message: 'Announce successfully deleted!'
})
}
}

View File

@@ -0,0 +1,42 @@
import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext";
import getTranslation from "App/Tasks/getTranslation";
import Maintenance from "App/Models/Maintenance";
import MaintenanceUpdateValidator from "App/Validators/maintenance/MaintenanceUpdateValidator";
export default class MaintenancesController {
public async index ({ response }: HttpContextContract) {
const maintenance = await Maintenance
.query()
.orderBy('created_at', 'desc')
.preload('reason')
.first()
return response.status(200).send({
maintenance: maintenance
})
}
public async show ({ params, response }: HttpContextContract) {
const maintenance = await Maintenance.findOrFail(params.id)
maintenance.load('reason')
return response.status(200).send({
maintenance
})
}
public async update ({ request, params, response }: HttpContextContract) {
const data = await request.validate(MaintenanceUpdateValidator)
const maintenance = await Maintenance.findOrFail(params.id)
if (data.reason) {
await maintenance.related('reason').associate(await getTranslation(data.reason))
}
await maintenance.merge(data).save()
return response.status(200).send({
maintenance
})
}
}

25
app/Models/Maintenance.ts Normal file
View File

@@ -0,0 +1,25 @@
import { DateTime } from 'luxon'
import {BaseModel, BelongsTo, belongsTo, column} from '@ioc:Adonis/Lucid/Orm'
import Translation from "App/Models/Translation";
export default class Maintenance extends BaseModel {
@column({ isPrimary: true })
public id: number
@column()
public active: boolean
@belongsTo(() => Translation, {
foreignKey: 'reasonId'
})
public reason: BelongsTo<typeof Translation>
@column()
public reasonId: number
@column.dateTime({ autoCreate: true })
public createdAt: DateTime
@column.dateTime({ autoCreate: true, autoUpdate: true })
public updatedAt: DateTime
}

View File

@@ -6,7 +6,7 @@ export default class AnnounceUpdateValidator {
}
public schema = schema.create({
code: schema.string(),
code: schema.string.optional(),
cover: schema.string.optional(),
color: schema.string.optional(),
hoverColor: schema.string.optional()

View File

@@ -1,16 +1,15 @@
import { schema } from '@ioc:Adonis/Core/Validator'
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
export default class AnnounceStoreValidator {
export default class MaintenanceUpdateValidator {
constructor (protected ctx: HttpContextContract) {
}
public schema = schema.create({
code: schema.string(),
cover: schema.string.optional(),
color: schema.string(),
hoverColor: schema.string()
reason: schema.string.optional(),
active: schema.boolean.optional()
})
public messages = {
required: 'The field {{field}} is required'
}

View File

@@ -0,0 +1,22 @@
import BaseSchema from '@ioc:Adonis/Lucid/Schema'
export default class Maintenances extends BaseSchema {
protected tableName = 'maintenances'
public async up () {
this.schema.createTable(this.tableName, (table) => {
table.increments('id')
table.boolean('active').defaultTo(false).notNullable()
table
.integer('reason_id')
.unsigned()
.references('translations.id')
.onDelete('CASCADE')
table.timestamps(true, true)
})
}
public async down () {
this.schema.dropTable(this.tableName)
}
}

View File

@@ -3,7 +3,9 @@ import Route from "@ioc:Adonis/Core/Route";
Route.group(() => {
Route.resource('/form', 'FormsController').except(['edit', 'create', 'update'])
Route.resource('/announces', 'AnnouncesController').except(['edit', 'create'])
Route.resource('/announces', 'AnnouncesController').only(['index', 'show', 'update'])
Route.resource('/maintenance', 'MaintenanceController').only(['index', 'show', 'update'])
Route.resource('/experiences', 'ExperiencesController').except(['edit', 'create'])