Files
aiworker-backend/drizzle/migrations/0000_charming_stature.sql
Hector Ros 0f44ec34ba Initial commit: Backend with Bun.serve() + Drizzle ORM
- Bun 1.3.6 server setup
- MariaDB schema (projects, agents, tasks)
- Auto-migrations on startup
- WebSocket support
- Health check endpoint

Co-Authored-By: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
2026-01-19 22:47:05 +01:00

57 lines
2.5 KiB
SQL

CREATE TABLE `agents` (
`id` varchar(36) NOT NULL,
`pod_name` varchar(253) NOT NULL,
`k8s_namespace` varchar(63) DEFAULT 'agents',
`status` enum('idle','busy','error','offline') DEFAULT 'idle',
`current_task_id` varchar(36),
`tasks_completed` int DEFAULT 0,
`last_heartbeat` timestamp,
`created_at` timestamp DEFAULT (now()),
`updated_at` timestamp DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT `agents_id` PRIMARY KEY(`id`),
CONSTRAINT `agents_pod_name_unique` UNIQUE(`pod_name`)
);
--> statement-breakpoint
CREATE TABLE `projects` (
`id` varchar(36) NOT NULL,
`name` varchar(255) NOT NULL,
`description` text,
`gitea_repo_id` int,
`gitea_repo_url` varchar(512),
`gitea_owner` varchar(100),
`gitea_repo_name` varchar(100),
`default_branch` varchar(100) DEFAULT 'main',
`k8s_namespace` varchar(63) NOT NULL,
`docker_image` varchar(512),
`env_vars` json,
`replicas` int DEFAULT 1,
`cpu_limit` varchar(20) DEFAULT '500m',
`memory_limit` varchar(20) DEFAULT '512Mi',
`status` enum('active','paused','archived') DEFAULT 'active',
`created_at` timestamp DEFAULT (now()),
`updated_at` timestamp DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT `projects_id` PRIMARY KEY(`id`),
CONSTRAINT `projects_k8s_namespace_unique` UNIQUE(`k8s_namespace`)
);
--> statement-breakpoint
CREATE TABLE `tasks` (
`id` varchar(36) NOT NULL,
`project_id` varchar(36) NOT NULL,
`title` varchar(255) NOT NULL,
`description` text,
`priority` enum('low','medium','high','urgent') DEFAULT 'medium',
`state` enum('backlog','in_progress','needs_input','ready_to_test','approved','staging','production') DEFAULT 'backlog',
`assigned_agent_id` varchar(36),
`branch_name` varchar(255),
`pr_url` varchar(512),
`preview_url` varchar(512),
`created_at` timestamp DEFAULT (now()),
`updated_at` timestamp DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT `tasks_id` PRIMARY KEY(`id`)
);
--> statement-breakpoint
ALTER TABLE `tasks` ADD CONSTRAINT `tasks_project_id_projects_id_fk` FOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
ALTER TABLE `tasks` ADD CONSTRAINT `tasks_assigned_agent_id_agents_id_fk` FOREIGN KEY (`assigned_agent_id`) REFERENCES `agents`(`id`) ON DELETE set null ON UPDATE no action;--> statement-breakpoint
CREATE INDEX `idx_status` ON `agents` (`status`);--> statement-breakpoint
CREATE INDEX `idx_status` ON `projects` (`status`);--> statement-breakpoint
CREATE INDEX `idx_project_state` ON `tasks` (`project_id`,`state`);