UserBalancesController.ts 1.7 KB

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