codenuk_backend_mine/services/tech-stack-selector/db/001_minimal_schema.sql
2025-09-30 16:27:32 +05:30

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;