UNPKG

@avonjs/avonjs

Version:

A fluent Node.js API generator.

44 lines (43 loc) 1.91 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 Responses_1 = require("../Responses"); const Controller_1 = __importDefault(require("./Controller")); class ResourceForceDeleteController extends Controller_1.default { /** * Default route handler */ async __invoke(request) { request .logger() ?.dump(`Searching on "${request.resourceName()}" repository ...`); const resource = await request.findResourceOrFail(); request .logger() ?.dump(`Authorizing user for "${Contracts_1.Ability.forceDelete}" access on "${request.resourceName()}".`); await resource.authorizeTo(request, Contracts_1.Ability.forceDelete); request.logger()?.dump(`Force deleting "${request.resourceName()}" ...`); await request.transaction(async (repository, transaction) => { // handle prunable fields // await Promise.all( // resource // .prunableFields(request, false) // .map((field) => field.forRequest(request)), // ); await resource.beforeForceDelete(request); await repository.forceDelete(resource.resource.getKey()); await resource.afterForceDelete(request); await resource.flushActionEvents(transaction); }); request .logger() ?.dump(`Resource "${request.resourceName()}" by id "${request.resourceId()}" "force deleted".`); await resource.deleted(request); request.logger()?.dump('Preparing response ...'); return new Responses_1.EmptyResponse(); } } exports.default = ResourceForceDeleteController;