168 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
			
		
		
	
	
			168 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
| 
 | |
| -- Hive Unified Database Schema
 | |
| 
 | |
| -- User Management
 | |
| CREATE TABLE users (
 | |
|     id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
 | |
|     email VARCHAR(255) UNIQUE NOT NULL,
 | |
|     hashed_password VARCHAR(255) NOT NULL,
 | |
|     is_active BOOLEAN DEFAULT true,
 | |
|     role VARCHAR(50) DEFAULT 'developer',
 | |
|     created_at TIMESTAMP DEFAULT NOW(),
 | |
|     last_login TIMESTAMP
 | |
| );
 | |
| 
 | |
| -- Agent Management
 | |
| CREATE TABLE agents (
 | |
|     id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
 | |
|     name VARCHAR(255) NOT NULL,
 | |
|     endpoint VARCHAR(512) NOT NULL,
 | |
|     model VARCHAR(255),
 | |
|     specialization VARCHAR(100),
 | |
|     capabilities JSONB,
 | |
|     hardware_config JSONB,
 | |
|     status VARCHAR(50) DEFAULT 'offline',
 | |
|     performance_targets JSONB,
 | |
|     created_at TIMESTAMP DEFAULT NOW(),
 | |
|     last_seen TIMESTAMP
 | |
| );
 | |
| 
 | |
| -- Workflow Management
 | |
| CREATE TABLE workflows (
 | |
|     id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
 | |
|     name VARCHAR(255) NOT NULL,
 | |
|     description TEXT,
 | |
|     n8n_data JSONB NOT NULL,
 | |
|     mcp_tools JSONB,
 | |
|     created_by UUID REFERENCES users(id),
 | |
|     version INTEGER DEFAULT 1,
 | |
|     active BOOLEAN DEFAULT true,
 | |
|     created_at TIMESTAMP DEFAULT NOW(),
 | |
|     updated_at TIMESTAMP DEFAULT NOW()
 | |
| );
 | |
| 
 | |
| -- Execution Tracking
 | |
| CREATE TABLE executions (
 | |
|     id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
 | |
|     workflow_id UUID REFERENCES workflows(id),
 | |
|     status VARCHAR(50) DEFAULT 'pending',
 | |
|     input_data JSONB,
 | |
|     output_data JSONB,
 | |
|     error_message TEXT,
 | |
|     progress INTEGER DEFAULT 0,
 | |
|     started_at TIMESTAMP,
 | |
|     completed_at TIMESTAMP,
 | |
|     created_at TIMESTAMP DEFAULT NOW()
 | |
| );
 | |
| 
 | |
| -- Task Management
 | |
| CREATE TABLE tasks (
 | |
|     id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
 | |
|     title VARCHAR(255) NOT NULL,
 | |
|     description TEXT,
 | |
|     priority INTEGER DEFAULT 5,
 | |
|     status VARCHAR(50) DEFAULT 'pending',
 | |
|     assigned_agent_id UUID REFERENCES agents(id),
 | |
|     workflow_id UUID REFERENCES workflows(id),
 | |
|     execution_id UUID REFERENCES executions(id),
 | |
|     metadata JSONB,
 | |
|     created_at TIMESTAMP DEFAULT NOW(),
 | |
|     started_at TIMESTAMP,
 | |
|     completed_at TIMESTAMP
 | |
| );
 | |
| 
 | |
| -- Performance Metrics (Time Series)
 | |
| CREATE TABLE agent_metrics (
 | |
|     agent_id UUID REFERENCES agents(id),
 | |
|     timestamp TIMESTAMP NOT NULL,
 | |
|     cpu_usage FLOAT,
 | |
|     memory_usage FLOAT,
 | |
|     gpu_usage FLOAT,
 | |
|     tokens_per_second FLOAT,
 | |
|     response_time FLOAT,
 | |
|     active_tasks INTEGER,
 | |
|     status VARCHAR(50),
 | |
|     PRIMARY KEY (agent_id, timestamp)
 | |
| );
 | |
| 
 | |
| -- System Alerts
 | |
| CREATE TABLE alerts (
 | |
|     id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
 | |
|     type VARCHAR(100) NOT NULL,
 | |
|     severity VARCHAR(20) NOT NULL,
 | |
|     message TEXT NOT NULL,
 | |
|     agent_id UUID REFERENCES agents(id),
 | |
|     resolved BOOLEAN DEFAULT false,
 | |
|     created_at TIMESTAMP DEFAULT NOW(),
 | |
|     resolved_at TIMESTAMP
 | |
| );
 | |
| 
 | |
| -- API Keys
 | |
| CREATE TABLE api_keys (
 | |
|     id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
 | |
|     user_id UUID REFERENCES users(id),
 | |
|     name VARCHAR(255) NOT NULL,
 | |
|     key_hash VARCHAR(255) NOT NULL,
 | |
|     is_active BOOLEAN DEFAULT true,
 | |
|     expires_at TIMESTAMP,
 | |
|     created_at TIMESTAMP DEFAULT NOW()
 | |
| );
 | |
| 
 | |
| -- Indexes for performance
 | |
| CREATE INDEX idx_agents_status ON agents(status);
 | |
| CREATE INDEX idx_workflows_active ON workflows(active, created_at);
 | |
| CREATE INDEX idx_executions_status ON executions(status, created_at);
 | |
| CREATE INDEX idx_tasks_status_priority ON tasks(status, priority DESC, created_at);
 | |
| CREATE INDEX idx_agent_metrics_timestamp ON agent_metrics(timestamp);
 | |
| CREATE INDEX idx_agent_metrics_agent_time ON agent_metrics(agent_id, timestamp);
 | |
| CREATE INDEX idx_alerts_unresolved ON alerts(resolved, created_at) WHERE resolved = false;
 | |
| CREATE INDEX idx_projects_name ON projects(name);
 | |
| CREATE INDEX idx_projects_bzzz_enabled ON projects(bzzz_enabled) WHERE bzzz_enabled = true;
 | |
| CREATE INDEX idx_projects_ready_to_claim ON projects(ready_to_claim) WHERE ready_to_claim = true;
 | |
| 
 | |
| -- Project Management for Bzzz Integration
 | |
| CREATE TABLE projects (
 | |
|     id SERIAL PRIMARY KEY,
 | |
|     name VARCHAR(255) UNIQUE NOT NULL,
 | |
|     description TEXT,
 | |
|     status VARCHAR(50) DEFAULT 'active',
 | |
|     github_repo VARCHAR(255),
 | |
|     git_url VARCHAR(255),
 | |
|     git_owner VARCHAR(255),
 | |
|     git_repository VARCHAR(255), 
 | |
|     git_branch VARCHAR(255) DEFAULT 'main',
 | |
|     bzzz_enabled BOOLEAN DEFAULT false,
 | |
|     ready_to_claim BOOLEAN DEFAULT false,
 | |
|     private_repo BOOLEAN DEFAULT false,
 | |
|     github_token_required BOOLEAN DEFAULT false,
 | |
|     created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
 | |
|     updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
 | |
| );
 | |
| 
 | |
| -- Refresh Tokens for Authentication
 | |
| CREATE TABLE refresh_tokens (
 | |
|     id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
 | |
|     user_id UUID REFERENCES users(id) ON DELETE CASCADE,
 | |
|     token_hash VARCHAR(255) NOT NULL,
 | |
|     expires_at TIMESTAMP WITH TIME ZONE NOT NULL,
 | |
|     created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
 | |
| );
 | |
| 
 | |
| -- Token Blacklist for Security
 | |
| CREATE TABLE token_blacklist (
 | |
|     id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
 | |
|     token_hash VARCHAR(255) NOT NULL,
 | |
|     expires_at TIMESTAMP WITH TIME ZONE NOT NULL,
 | |
|     blacklisted_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
 | |
| );
 | |
| 
 | |
| -- Sample data
 | |
| INSERT INTO users (email, hashed_password, role) VALUES 
 | |
| ('admin@hive.local', '$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/lewohT6ZErjH.2T.2', 'admin'),
 | |
| ('developer@hive.local', '$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/lewohT6ZErjH.2T.2', 'developer');
 | |
| 
 | |
| -- Sample project data
 | |
| INSERT INTO projects (name, description, status, github_repo, git_url, git_owner, git_repository, git_branch, bzzz_enabled, ready_to_claim, private_repo, github_token_required) VALUES 
 | |
| ('hive', 'Distributed task coordination system with AI agents', 'active', 'anthonyrawlins/hive', 'https://github.com/anthonyrawlins/hive.git', 'anthonyrawlins', 'hive', 'main', true, true, false, false),
 | |
| ('bzzz', 'P2P collaborative development coordination system', 'active', 'anthonyrawlins/bzzz', 'https://github.com/anthonyrawlins/bzzz.git', 'anthonyrawlins', 'bzzz', 'main', true, true, false, false);
 | 
