@deepbrainspace/nx-surrealdb
Version:
NX plugin for SurrealDB migrations with modular architecture
69 lines • 2.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ModuleLockManager = void 0;
class ModuleLockManager {
constructor(config) {
this.config = config;
}
isModuleLocked(moduleId) {
if (!this.config?.modules[moduleId]) {
return false;
}
return this.config.modules[moduleId].locked === true;
}
getModuleLockReason(moduleId) {
if (!this.config?.modules[moduleId]) {
return undefined;
}
return this.config.modules[moduleId].lockReason;
}
validateModuleLock(moduleId) {
const isLocked = this.isModuleLocked(moduleId);
const reason = this.getModuleLockReason(moduleId);
return {
isLocked,
reason,
lockIcon: isLocked ? '🔒' : '',
};
}
validateRollbackLock(moduleIds) {
const blockedModules = [];
const lockReasons = {};
for (const moduleId of moduleIds) {
if (this.isModuleLocked(moduleId)) {
blockedModules.push(moduleId);
const reason = this.getModuleLockReason(moduleId);
lockReasons[moduleId] = reason || 'Module is locked for safety';
}
}
return { blockedModules, lockReasons };
}
getLockedModules() {
if (!this.config)
return [];
return Object.entries(this.config.modules)
.filter(([_, config]) => config.locked === true)
.map(([moduleId, _]) => moduleId);
}
validateMigrationLock(moduleIds) {
const blockedModules = [];
const lockReasons = {};
for (const moduleId of moduleIds) {
if (this.isModuleLocked(moduleId)) {
blockedModules.push(moduleId);
const reason = this.getModuleLockReason(moduleId);
lockReasons[moduleId] = reason || 'Module is locked for safety';
}
}
return {
canMigrate: blockedModules.length === 0,
blockedModules,
lockReasons,
};
}
static createLockManager(config) {
return new ModuleLockManager(config);
}
}
exports.ModuleLockManager = ModuleLockManager;
//# sourceMappingURL=module-lock-manager.js.map