UNPKG

@avonjs/avonjs

Version:

A fluent Node.js API generator.

38 lines (37 loc) 1.72 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const Contracts_1 = require("../../Contracts"); const ModelNotFoundException_1 = __importDefault(require("../../Exceptions/ModelNotFoundException")); const ResourceReviewResponse_1 = __importDefault(require("../Responses/ResourceReviewResponse")); const Controller_1 = __importDefault(require("./Controller")); class ResourceReviewController extends Controller_1.default { /** * Default route handler */ async __invoke(request) { request .logger() ?.dump(`Searching on "${request.resourceName()}" repository ...`); const model = await request .resource() .reviewQuery(request, request.findModelQuery()) .first(); ModelNotFoundException_1.default.unless(model); const resource = request.newResource(model); request .logger() ?.dump(`Authorizing user for "${Contracts_1.Ability.review}" access on "${request.resourceName()}".`); await resource.authorizeTo(request, Contracts_1.Ability.review); request.logger()?.dump('Resolving resource fields ...'); await Promise.all(resource .reviewFields(request, model) .onlyLoadedLazyFields() .map((field) => field.resolveForResources(request, [model]))); request.logger()?.dump('Preparing response ...'); return new ResourceReviewResponse_1.default(await resource.serializeForReview(request)); } } exports.default = ResourceReviewController;