UNPKG

@avonjs/avonjs

Version:

A fluent Node.js API generator.

62 lines (61 loc) 2.48 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const Avon_1 = __importDefault(require("../../Avon")); const Contracts_1 = require("../../Contracts"); const Responses_1 = require("../Responses"); const Controller_1 = __importDefault(require("./Controller")); class ResourceDeleteController 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.delete}" access on "${request.resourceName()}".`); await resource.authorizeTo(request, Contracts_1.Ability.delete); if (resource.softDeletes()) { request.logger()?.dump(`Soft deleting "${request.resourceName()}" ...`); } else { request.logger()?.dump(`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.beforeDelete(request); await repository.delete(request.resourceId()); await resource.afterDelete(request); if (resource.softDeletes()) { await resource.recordDeletionEvent(transaction, Avon_1.default.userId(request)); } else { await resource.flushActionEvents(transaction); } }); if (!resource.softDeletes()) { request .logger() ?.dump(`Resource "${request.resourceName()}" by id "${request.resourceId()}" "deleted".`); await resource.deleted(request); } else { request .logger() ?.dump(`Resource "${request.resourceName()}" "soft deleted".`); } request.logger()?.dump('Preparing response ...'); return new Responses_1.EmptyResponse(); } } exports.default = ResourceDeleteController;