61 lines
2.2 KiB
PL/PgSQL
61 lines
2.2 KiB
PL/PgSQL
-- Tech Stack Selector Database Schema
|
|
-- Minimal schema for tech stack recommendations only
|
|
|
|
-- Enable UUID extension if not already enabled
|
|
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
|
|
-- Tech stack recommendations table - Store AI-generated recommendations
|
|
CREATE TABLE IF NOT EXISTS tech_stack_recommendations (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
project_id UUID REFERENCES projects(id) ON DELETE CASCADE,
|
|
user_requirements TEXT NOT NULL,
|
|
recommended_stack JSONB NOT NULL, -- Store the complete tech stack recommendation
|
|
confidence_score DECIMAL(3,2) CHECK (confidence_score >= 0.0 AND confidence_score <= 1.0),
|
|
reasoning TEXT,
|
|
created_at TIMESTAMP DEFAULT NOW(),
|
|
updated_at TIMESTAMP DEFAULT NOW()
|
|
);
|
|
|
|
-- Stack analysis cache - Cache AI analysis results
|
|
CREATE TABLE IF NOT EXISTS stack_analysis_cache (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
requirements_hash VARCHAR(64) UNIQUE NOT NULL, -- Hash of requirements for cache key
|
|
project_type VARCHAR(100),
|
|
analysis_result JSONB NOT NULL,
|
|
confidence_score DECIMAL(3,2),
|
|
created_at TIMESTAMP DEFAULT NOW()
|
|
);
|
|
|
|
-- Indexes for performance
|
|
CREATE INDEX IF NOT EXISTS idx_tech_stack_recommendations_project_id ON tech_stack_recommendations(project_id);
|
|
CREATE INDEX IF NOT EXISTS idx_tech_stack_recommendations_created_at ON tech_stack_recommendations(created_at);
|
|
CREATE INDEX IF NOT EXISTS idx_stack_analysis_cache_hash ON stack_analysis_cache(requirements_hash);
|
|
CREATE INDEX IF NOT EXISTS idx_stack_analysis_cache_project_type ON stack_analysis_cache(project_type);
|
|
|
|
-- Update timestamps trigger function
|
|
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.updated_at = NOW();
|
|
RETURN NEW;
|
|
END;
|
|
$$ language 'plpgsql';
|
|
|
|
-- Apply triggers for updated_at columns
|
|
CREATE TRIGGER update_tech_stack_recommendations_updated_at
|
|
BEFORE UPDATE ON tech_stack_recommendations
|
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
|
|
-- Success message
|
|
SELECT 'Tech Stack Selector database schema created successfully!' as message;
|
|
|
|
-- Display created tables
|
|
SELECT
|
|
schemaname,
|
|
tablename,
|
|
tableowner
|
|
FROM pg_tables
|
|
WHERE schemaname = 'public'
|
|
AND tablename IN ('tech_stack_recommendations', 'stack_analysis_cache')
|
|
ORDER BY tablename;
|