summaryrefslogtreecommitdiff
path: root/internal/storage/db.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/storage/db.go')
-rw-r--r--internal/storage/db.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/internal/storage/db.go b/internal/storage/db.go
index d571c2e..8b563a6 100644
--- a/internal/storage/db.go
+++ b/internal/storage/db.go
@@ -154,6 +154,36 @@ func (s *DB) migrate() error {
UNIQUE(role, version)
)`,
`CREATE INDEX IF NOT EXISTS idx_role_configs_role_status ON role_configs(role, status)`,
+ `CREATE TABLE IF NOT EXISTS epics (
+ id TEXT PRIMARY KEY,
+ name TEXT NOT NULL,
+ description TEXT,
+ status TEXT NOT NULL DEFAULT 'OPEN',
+ discovery_source TEXT,
+ created_at DATETIME NOT NULL,
+ updated_at DATETIME NOT NULL
+ )`,
+ `CREATE TABLE IF NOT EXISTS stories (
+ id TEXT PRIMARY KEY,
+ epic_id TEXT,
+ project_id TEXT,
+ name TEXT NOT NULL,
+ branch_name TEXT,
+ status TEXT NOT NULL,
+ discovery_source TEXT,
+ spec TEXT,
+ acceptance_criteria_json TEXT NOT NULL DEFAULT '[]',
+ validation_json TEXT,
+ deploy_config TEXT,
+ priority TEXT,
+ root_task_id TEXT,
+ created_at DATETIME NOT NULL,
+ updated_at DATETIME NOT NULL
+ )`,
+ `CREATE INDEX IF NOT EXISTS idx_epics_status ON epics(status)`,
+ `CREATE INDEX IF NOT EXISTS idx_stories_status ON stories(status)`,
+ `CREATE INDEX IF NOT EXISTS idx_stories_epic_id ON stories(epic_id)`,
+ `CREATE INDEX IF NOT EXISTS idx_stories_root_task_id ON stories(root_task_id)`,
}
for _, m := range migrations {
if _, err := s.db.Exec(m); err != nil {