@n4it/typeorm-audit
Version:
TypeORM Auditing: Create history tables and manage changes of entities automagically.
47 lines • 1.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.withAuditDataSource = exports.getAuditOptions = exports.getAuditEntity = void 0;
const typeorm_1 = require("typeorm");
const reflect_1 = require("./reflect");
const audit_subscriber_1 = require("../subscribers/audit.subscriber");
const getAuditEntity = (entityMetadata) => {
const meta = (0, reflect_1.getMetaData)(entityMetadata.target);
if (!meta) {
return undefined;
}
return meta.historyEntity;
};
exports.getAuditEntity = getAuditEntity;
const getAuditOptions = async (options) => {
const originDataSource = await new typeorm_1.DataSource({
...options,
logger: undefined,
synchronize: false,
}).initialize();
const allMetaData = originDataSource.entityMetadatas
.map(exports.getAuditEntity)
.filter(Boolean);
let originalEntities = originDataSource.options.entities || [];
let originalSubscribers = originDataSource.options.subscribers || [];
if (!Array.isArray(originalEntities)) {
originalEntities = Object.values(originalEntities);
}
if (!Array.isArray(originalSubscribers)) {
originalSubscribers = Object.values(originalSubscribers);
}
const combinedEntities = [...originalEntities, ...allMetaData];
const combinedSubscribers = [...originalSubscribers, audit_subscriber_1.AuditSubscriber];
await originDataSource.destroy();
return {
...options,
entities: combinedEntities,
subscribers: combinedSubscribers,
};
};
exports.getAuditOptions = getAuditOptions;
const withAuditDataSource = async (dataSource) => {
const newOptions = await (0, exports.getAuditOptions)(dataSource.options);
return new typeorm_1.DataSource(newOptions);
};
exports.withAuditDataSource = withAuditDataSource;
//# sourceMappingURL=init.js.map