@vulcan-sql/core
Version:
Core package of VulcanSQL
49 lines • 2.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.VulcanArtifactBuilder = void 0;
const tslib_1 = require("tslib");
const models_1 = require("../../models/index");
const models_2 = require("../../models/index");
const inversify_1 = require("inversify");
const types_1 = require("../../containers/types");
const utils_1 = require("../utils");
const class_transformer_1 = require("class-transformer");
let VulcanArtifactBuilder = class VulcanArtifactBuilder {
constructor(persistentStore, serializer) {
this.artifact = {};
this.serializer = serializer;
this.persistentStore = persistentStore;
}
build() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const artifactInPureObject = (0, class_transformer_1.instanceToPlain)(this.artifact);
const serializedArtifact = this.serializer.serialize(artifactInPureObject);
yield this.persistentStore.save(serializedArtifact);
});
}
load() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const serializedArtifact = yield this.persistentStore.load();
const artifactInPureObject = this.serializer.deserialize(serializedArtifact);
this.artifact = (0, class_transformer_1.plainToInstance)(models_1.BuiltArtifact, artifactInPureObject);
});
}
getArtifact(key) {
const target = this.artifact[key];
if (!target)
throw new utils_1.InternalError(`Artifact ${key} not found`);
return target;
}
addArtifact(key, data) {
this.artifact[key] = data;
}
};
VulcanArtifactBuilder = tslib_1.__decorate([
(0, inversify_1.injectable)(),
tslib_1.__param(0, (0, inversify_1.inject)(types_1.TYPES.PersistentStore)),
tslib_1.__param(1, (0, inversify_1.inject)(types_1.TYPES.Serializer)),
tslib_1.__metadata("design:paramtypes", [models_1.PersistentStore,
models_2.Serializer])
], VulcanArtifactBuilder);
exports.VulcanArtifactBuilder = VulcanArtifactBuilder;
//# sourceMappingURL=vulcanArtifactBuilder.js.map