CategoriesController.ts 1.6 KB

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