mirror of
https://github.com/ArthurDanjou/artdanj-api.git
synced 2026-02-02 04:47:56 +01:00
Add maintenance mode and update announce
This commit is contained in:
@@ -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!'
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
42
app/Controllers/Http/MaintenancesController.ts
Normal file
42
app/Controllers/Http/MaintenancesController.ts
Normal 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
25
app/Models/Maintenance.ts
Normal 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
|
||||
}
|
||||
@@ -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()
|
||||
|
||||
@@ -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'
|
||||
}
|
||||
Reference in New Issue
Block a user