@boundless-oss/atlas
Version:
Atlas - MCP Server for comprehensive startup project management
94 lines (81 loc) • 2.83 kB
text/typescript
import type { SQLiteManager } from '../sqlite-manager.js';
/**
* Migration to remove 'planning' status from the agile module
*
* This migration:
* 1. Updates all stories with 'planning' status to 'backlog'
* 2. Updates all sprints with 'planning' status to 'active'
* 3. Updates all epics with 'planning' status to 'planned'
*/
export async function removePlanningStatus(db: SQLiteManager): Promise<void> {
try {
// Start transaction
await db.run('BEGIN TRANSACTION');
// Update stories with planning status to backlog
const storiesResult = await db.run(
`UPDATE agile_stories
SET status = 'backlog',
updated_at = ?
WHERE status = 'planning'`,
[Date.now()]
);
if (storiesResult.success) {
console.log(`Updated ${storiesResult.data?.changes || 0} stories from 'planning' to 'backlog' status`);
}
// Update sprints with planning status to active
const sprintsResult = await db.run(
`UPDATE agile_sprints
SET status = 'active',
updated_at = ?
WHERE status = 'planning'`,
[Date.now()]
);
if (sprintsResult.success) {
console.log(`Updated ${sprintsResult.data?.changes || 0} sprints from 'planning' to 'active' status`);
}
// Update epics with planning status to planned
const epicsResult = await db.run(
`UPDATE agile_epics
SET status = 'planned',
updated_at = ?
WHERE status = 'planning'`,
[Date.now()]
);
if (epicsResult.success) {
console.log(`Updated ${epicsResult.data?.changes || 0} epics from 'planning' to 'planned' status`);
}
// Update releases with planning status to in_progress
const releasesResult = await db.run(
`UPDATE roadmap_releases
SET status = 'in_progress',
updated_at = ?
WHERE status = 'planning'`,
[Date.now()]
);
if (releasesResult.success) {
console.log(`Updated ${releasesResult.data?.changes || 0} releases from 'planning' to 'in_progress' status`);
}
// Commit transaction
await db.run('COMMIT');
console.log('Successfully removed planning status from all tables');
} catch (error) {
// Rollback on error
await db.run('ROLLBACK');
console.error('Failed to remove planning status:', error);
throw error;
}
}
/**
* Run the migration
*/
export async function up(db: SQLiteManager): Promise<void> {
await removePlanningStatus(db);
}
/**
* Rollback the migration (not recommended)
* This would require adding 'planning' status back to the codebase
*/
export async function down(db: SQLiteManager): Promise<void> {
console.warn('Rolling back planning status removal is not recommended');
console.warn('This would require adding planning status back to the codebase');
}