SeriesController.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
  2. import Serie from 'App/Models/Series'
  3. import PaginationService from 'App/Services/PaginationService'
  4. import { schema } from '@ioc:Adonis/Core/Validator'
  5. export default class SeriesController {
  6. private paginationService = new PaginationService(Serie)
  7. public async index({ request }: HttpContextContract) {
  8. return await this.paginationService.paginate(request.all())
  9. }
  10. public async store({ request }: HttpContextContract) {
  11. await request.validate({
  12. schema: schema.create({
  13. title: schema.string(),
  14. description: schema.string.optional(),
  15. cover: schema.string.optional(),
  16. tags: schema.array.optional().members(schema.string()),
  17. releaseDate: schema.date.optional(),
  18. meta: schema.object.optional().anyMembers()
  19. })
  20. })
  21. return await Serie.create(request.all())
  22. }
  23. public async show({ params }: HttpContextContract) {
  24. return await Serie.findOrFail(params.id)
  25. }
  26. public async update({ params, request }: HttpContextContract) {
  27. const serie = await Serie.findOrFail(params.id)
  28. const payload = await request.validate({
  29. schema: schema.create({
  30. title: schema.string.optional(),
  31. description: schema.string.optional(),
  32. cover: schema.string.optional(),
  33. tags: schema.array.optional().members(schema.string()),
  34. releaseDate: schema.date.optional(),
  35. meta: schema.object.optional().anyMembers()
  36. })
  37. })
  38. serie.merge(payload)
  39. return await serie.save()
  40. }
  41. public async destroy({ params }: HttpContextContract) {
  42. const serie = await Serie.findOrFail(params.id)
  43. await serie.delete()
  44. }
  45. }