TrackingsController.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
  2. import Tracking from 'App/Models/Tracking'
  3. import PaginationService from 'App/Services/PaginationService'
  4. import { schema } from '@ioc:Adonis/Core/Validator'
  5. export default class TrackingsController {
  6. private paginationService = new PaginationService(Tracking)
  7. public async index({ request }: HttpContextContract) {
  8. return await this.paginationService.paginate(request.all())
  9. }
  10. public async store({ request }: HttpContextContract) {
  11. const data = await request.validate({
  12. schema: schema.create({
  13. userId: schema.number(),
  14. seriesId: schema.number(),
  15. curEpId: schema.number()
  16. })
  17. })
  18. return await Tracking.create(data)
  19. }
  20. public async show({ params }: HttpContextContract) {
  21. return await Tracking.findOrFail(params.id)
  22. }
  23. public async update({ request, params }: HttpContextContract) {
  24. const data = await request.validate({
  25. schema: schema.create({
  26. userId: schema.number.optional(),
  27. seriesId: schema.number.optional(),
  28. curEpId: schema.number.optional()
  29. })
  30. })
  31. const tracking = await Tracking.findOrFail(params.id)
  32. tracking.merge(data)
  33. return await tracking.save()
  34. }
  35. public async destroy({ params }: HttpContextContract) {
  36. const tracking = await Tracking.findOrFail(params.id)
  37. await tracking.delete()
  38. }
  39. }