49d514c050
Forgebot is a K8s operator + API service for dispatching AI agent jobs from git forge commands. Includes: - CRDs: AgentPool, AgentTask, ProviderQueue, RepositoryBinding - API server with webhook handler, task queue, and comment proxy - Operator controllers for task scheduling and job management - Gitea provider with webhook parsing and signature verification - PostgreSQL database with auto-migration - Woodpecker CI pipelines and multi-stage Dockerfiles
36 lines
1.2 KiB
Go
36 lines
1.2 KiB
Go
package database
|
|
|
|
import "context"
|
|
|
|
func (db *DB) migrate() error {
|
|
_, err := db.Pool.Exec(context.Background(), `
|
|
CREATE TABLE IF NOT EXISTS tasks (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
parent_task_id UUID REFERENCES tasks(id),
|
|
command TEXT NOT NULL,
|
|
skill TEXT NOT NULL DEFAULT '',
|
|
repository TEXT NOT NULL,
|
|
ref TEXT NOT NULL,
|
|
issue_number INTEGER NOT NULL DEFAULT 0,
|
|
pr_number INTEGER NOT NULL DEFAULT 0,
|
|
comment_id BIGINT NOT NULL DEFAULT 0,
|
|
body TEXT NOT NULL DEFAULT '',
|
|
author TEXT NOT NULL,
|
|
extra_tools TEXT[] NOT NULL DEFAULT '{}',
|
|
status TEXT NOT NULL DEFAULT 'pending',
|
|
pool_ref TEXT NOT NULL DEFAULT '',
|
|
job_name TEXT NOT NULL DEFAULT '',
|
|
result TEXT NOT NULL DEFAULT '',
|
|
error_message TEXT NOT NULL DEFAULT '',
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
started_at TIMESTAMPTZ,
|
|
completed_at TIMESTAMPTZ
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status);
|
|
CREATE INDEX IF NOT EXISTS idx_tasks_repository ON tasks(repository);
|
|
CREATE INDEX IF NOT EXISTS idx_tasks_parent ON tasks(parent_task_id);
|
|
`)
|
|
return err
|
|
}
|