UsersController.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
  2. import User from 'App/Models/User'
  3. import PaginationService from 'App/Services/PaginationService'
  4. import { schema, rules } from '@ioc:Adonis/Core/Validator'
  5. export default class UsersController {
  6. private paginationService = new PaginationService(User)
  7. public async index({ request }: HttpContextContract) {
  8. return await this.paginationService.paginate(request.all())
  9. }
  10. public async store({ request }: HttpContextContract) {
  11. await request.validate({
  12. schema: schema.create({
  13. username: schema.string([])
  14. })
  15. })
  16. return await User.create(request.all())
  17. }
  18. public async show({ params }: HttpContextContract) {
  19. return await User.findOrFail(params.id)
  20. }
  21. public async update({ params, request }: HttpContextContract) {
  22. const user = await User.findOrFail(params.id)
  23. const payload = await request.validate({
  24. schema: schema.create({
  25. username: schema.string.optional([rules.maxLength(20)]),
  26. avatar: schema.string.optional([rules.maxLength(255)])
  27. })
  28. })
  29. user.merge(payload)
  30. return await user.save()
  31. }
  32. public async destroy({ params }: HttpContextContract) {
  33. const user = await User.findOrFail(params.id)
  34. await user.delete()
  35. }
  36. public async my({ auth }: HttpContextContract) {
  37. return auth.user
  38. }
  39. }