MembershipsController.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
  2. import Membership from 'App/Models/Membership'
  3. import PaginationService from 'App/Services/PaginationService'
  4. import { schema, rules } from '@ioc:Adonis/Core/Validator'
  5. import { Exception } from '@adonisjs/core/build/standalone'
  6. export default class MemershipsController {
  7. private paginationService = new PaginationService(Membership)
  8. public async index({ request }: HttpContextContract) {
  9. return await this.paginationService.paginate(request.all())
  10. }
  11. public async store({ request }: HttpContextContract) {
  12. const data = await request.validate({
  13. schema: schema.create({
  14. userId: schema.number(),
  15. startAt: schema.date(),
  16. expireAt: schema.date()
  17. })
  18. })
  19. return await Membership.create(data as any)
  20. }
  21. public async show({ params }: HttpContextContract) {
  22. return await Membership.findOrFail(params.id)
  23. }
  24. public async destroy({ params }: HttpContextContract) {
  25. const membership = await Membership.findOrFail(params.id)
  26. await membership.delete()
  27. }
  28. public async my({ auth }: HttpContextContract) {
  29. const membership = Membership.query()
  30. .where('userId', auth.user!.id)
  31. .orderBy('expireAt', 'desc')
  32. .limit(1)
  33. .first()
  34. if (!membership) {
  35. throw new Exception('Membership not found', 404)
  36. }
  37. return membership
  38. }
  39. }