Something went wrong. Try again.
Something went wrong. Try again.
2.6 kB · 65 lines
TypeScript
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566import { inject } from '@adonisjs/core'import type { HttpContext } from '@adonisjs/core/http'import { SimpleMessagesProvider } from '@vinejs/vine'import KitCommentsService from '#kits/services/kit_comments_service'import KitComment from '#kits/models/kit_comment'import KitCommentPolicy from '#kits/policies/kit_comment_policy'import KitCommentTransformer from '#kits/transformers/kit_comment_transformer'import { destroyKitCommentParamsValidator, kitCommentParamsValidator, listKitCommentsQueryValidator, storeKitCommentValidator,} from '#kits/validators/kit_comment'
const commentMessages = new SimpleMessagesProvider({ 'text.required': 'Comment cannot be blank.', 'text.minLength': 'Comment cannot be blank.', 'text.maxLength': 'Comment cannot exceed 300 characters.',})
@inject()export default class KitCommentsController { constructor(private kitCommentsService: KitCommentsService) {}
async index({ request, response, params, containerResolver }: HttpContext) { const { handle, rkey } = await request.validateUsing(kitCommentParamsValidator, { data: params, }) const { page } = await request.validateUsing(listKitCommentsQueryValidator) const paginator = await this.kitCommentsService.list(handle, rkey, page ?? 1) const result = await KitCommentTransformer.paginate(paginator.all(), { ...paginator.getMeta(), hasMorePages: paginator.hasMorePages, }) .depth(2) .resolve(containerResolver, 0) return response.json(result) }
async store({ request, response, params, auth, containerResolver }: HttpContext) { const { handle, rkey } = await request.validateUsing(kitCommentParamsValidator, { data: params, }) const payload = await request.validateUsing(storeKitCommentValidator, { messagesProvider: commentMessages, }) const user = auth.getUserOrFail() const comment = await this.kitCommentsService.create(handle, rkey, user, payload.text) const result = await KitCommentTransformer.transform(comment) .depth(2) .resolve(containerResolver, 0) return response.json(result) }
async destroy({ request, response, params, auth, bouncer }: HttpContext) { const { commentId } = await request.validateUsing(destroyKitCommentParamsValidator, { data: params, }) const user = auth.getUserOrFail() const comment = await KitComment.findOrFail(commentId) await bouncer.with(KitCommentPolicy).authorize('destroy', comment) await this.kitCommentsService.destroy(comment, user) return response.json({ success: true }) }}