feat(isac): link skill chips to abilities
This commit is contained in:
@@ -37,6 +37,8 @@ const statements = schema
|
||||
.filter(Boolean);
|
||||
|
||||
for (const statement of statements) {
|
||||
// This index is deferred until the additive legacy-column migration below.
|
||||
if (statement.startsWith('CREATE INDEX IF NOT EXISTS skill_chip_sets_ability_idx')) continue;
|
||||
await database.exec(statement);
|
||||
}
|
||||
|
||||
@@ -425,6 +427,22 @@ if (buildColumns.length) {
|
||||
}
|
||||
await database.exec('CREATE INDEX IF NOT EXISTS builds_visibility_updated_idx ON builds(visibility,updated_at DESC)');
|
||||
|
||||
const skillChipColumns = await (await database.prepare("PRAGMA table_info('skill_chip_sets')")).all();
|
||||
if (skillChipColumns.length && !skillChipColumns.some((column) => column.name === 'specialization_ability_id')) {
|
||||
console.log('Associating Skill Chip definitions with specialization abilities.');
|
||||
await database.exec('ALTER TABLE skill_chip_sets ADD COLUMN specialization_ability_id TEXT REFERENCES specialization_abilities(id)');
|
||||
}
|
||||
await database.exec('CREATE INDEX IF NOT EXISTS skill_chip_sets_ability_idx ON skill_chip_sets(specialization_ability_id,active)');
|
||||
await database.exec(`UPDATE specialization_focuses SET builder_ready=0,updated_at='${new Date().toISOString()}'
|
||||
WHERE builder_ready=1 AND (
|
||||
SELECT COUNT(*) FROM specialization_focus_abilities link
|
||||
JOIN specialization_abilities ability ON ability.id=link.ability_id AND ability.active=1
|
||||
WHERE link.focus_id=specialization_focuses.id AND (
|
||||
SELECT COUNT(*) FROM skill_chip_sets chips
|
||||
WHERE chips.specialization_ability_id=ability.id AND chips.active=1
|
||||
)=3
|
||||
)<>3`);
|
||||
|
||||
console.log(`Applied ${statements.length} schema statements to ${databasePath}`);
|
||||
|
||||
if (!databaseAlreadyExisted && process.env.SKIP_DEFAULT_USERS !== 'true') {
|
||||
|
||||
Reference in New Issue
Block a user