Files
session-mcp/migrations/012_builds.sql
Christian Gick 00de7f1299 Add database migrations for session context system
Phase 1: Database Schema Implementation
- Migration 010: Sessions table with bulletproof auto-incrementing
  - Unique session IDs across all projects
  - Per-project session numbers (1, 2, 3, ...)
  - Atomic sequence generation (no race conditions)
  - Session-task and session-commit linking
  - Semantic search with pgvector HNSW indexes

- Migration 011: Memories table with enhanced schema
  - Migrated existing session_memories to memories
  - Added session_id and task_id foreign keys
  - Renamed columns for consistency
  - HNSW indexing for semantic search

- Migration 012: Builds table for CI/CD tracking
  - Links builds to sessions and versions
  - Tracks build status, timing, and metadata

All migrations tested and verified on agiliton database.

Related: CF-167 (Fix shared session-summary.md file conflict)
2026-01-17 07:41:03 +02:00

47 lines
2.0 KiB
SQL

-- Migration 012: Builds table for CI/CD tracking
-- Purpose: Track builds and link them to sessions and versions
-- Dependencies: 001_base_schema.sql (versions table), 010_sessions.sql (sessions table)
-- Builds table: Store build information linked to sessions and versions
CREATE TABLE IF NOT EXISTS builds (
id SERIAL PRIMARY KEY,
session_id TEXT REFERENCES sessions(id) ON DELETE SET NULL,
version_id TEXT REFERENCES versions(id) ON DELETE CASCADE,
build_number INTEGER NOT NULL,
status TEXT DEFAULT 'pending' CHECK (status IN ('pending', 'running', 'success', 'failed')),
-- Build metadata
git_commit_sha TEXT,
git_branch TEXT,
build_log_url TEXT,
artifacts_url TEXT,
-- Timing
started_at TIMESTAMP WITH TIME ZONE NOT NULL,
finished_at TIMESTAMP WITH TIME ZONE,
duration_seconds INTEGER GENERATED ALWAYS AS
(EXTRACT(EPOCH FROM (finished_at - started_at))) STORED,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Indexes for efficient querying
CREATE INDEX idx_builds_session ON builds(session_id);
CREATE INDEX idx_builds_version ON builds(version_id);
CREATE INDEX idx_builds_status ON builds(status);
CREATE INDEX idx_builds_started ON builds(started_at DESC);
CREATE INDEX idx_builds_commit ON builds(git_commit_sha);
-- Unique constraint: one build number per version
CREATE UNIQUE INDEX idx_builds_version_number ON builds(version_id, build_number)
WHERE version_id IS NOT NULL;
-- Comments for documentation
COMMENT ON TABLE builds IS 'CI/CD build tracking linked to sessions and versions';
COMMENT ON COLUMN builds.session_id IS 'Optional link to session that triggered the build';
COMMENT ON COLUMN builds.version_id IS 'Link to version being built';
COMMENT ON COLUMN builds.duration_seconds IS 'Auto-calculated build duration in seconds';
COMMENT ON COLUMN builds.build_log_url IS 'URL to build logs (e.g., GitHub Actions run)';
COMMENT ON COLUMN builds.artifacts_url IS 'URL to build artifacts (e.g., app binary, Docker image)';