@avonjs/avonjs
Version:
A fluent Node.js API generator.
40 lines (39 loc) • 1.77 kB
JavaScript
;
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;