UserBalancesController.ts 1.8 KB

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