import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' import User from 'App/Models/User' import PaginationService from 'App/Services/PaginationService' import { schema, rules } from '@ioc:Adonis/Core/Validator' export default class UsersController { private paginationService = new PaginationService(User) public async index({ request }: HttpContextContract) { return await this.paginationService.paginate(request.all()) } public async store({ request }: HttpContextContract) { await request.validate({ schema: schema.create({ username: schema.string([]) }) }) return await User.create(request.all()) } public async show({ params }: HttpContextContract) { return await User.findOrFail(params.id) } public async update({ params, request }: HttpContextContract) { const user = await User.findOrFail(params.id) const payload = await request.validate({ schema: schema.create({ username: schema.string.optional([rules.maxLength(20)]), avatar: schema.string.optional([rules.maxLength(255)]) }) }) user.merge(payload) return await user.save() } public async destroy({ params }: HttpContextContract) { const user = await User.findOrFail(params.id) await user.delete() } public async my({ auth }: HttpContextContract) { return auth.user } }