UNPKG

@avonjs/avonjs

Version:

A fluent Node.js API generator.

40 lines (39 loc) 1.77 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 ResourceRestoreController extends Controller_1.default { /** * Default route handler */ async __invoke(request) { request .logger() ?.dump(`Searching on "${request.resourceName()}" repository ...`); const resource = request.newResource(await request .resource() .detailQuery(request, request.findModelQuery()) .first()); request .logger() ?.dump(`Authorizing user for "${Contracts_1.Ability.review}" access on "${request.resourceName()}".`); await resource.authorizeTo(request, Contracts_1.Ability.restore); request.logger()?.dump(`Restoring "${request.resourceName()}" ...`); await request.transaction(async (repository, transaction) => { await resource.beforeRestore(request); await repository.restore(request.route('resourceId')); await resource.afterRestore(request); await resource.recordRestoreEvent(transaction, Avon_1.default.userId(request)); }); request.logger()?.dump(`Restored "${request.resourceName()}" ...`); await resource.restored(request); request.logger()?.dump('Preparing response ...'); return new Responses_1.EmptyResponse(); } } exports.default = ResourceRestoreController;