Files
cloud-mcp/src/storage/schema.sql

82 lines
2.7 KiB
SQL

-- Database schema for Cloud MCP Server
-- PostgreSQL database schema
-- Code Snippets table
CREATE TABLE IF NOT EXISTS code_snippets (
id VARCHAR(255) PRIMARY KEY,
title TEXT NOT NULL,
code TEXT NOT NULL,
language VARCHAR(100) NOT NULL,
tags TEXT[] DEFAULT '{}',
category VARCHAR(100),
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
);
-- Notes table
CREATE TABLE IF NOT EXISTS notes (
id VARCHAR(255) PRIMARY KEY,
title TEXT NOT NULL,
content TEXT NOT NULL,
tags TEXT[] DEFAULT '{}',
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
);
-- Tasks table
CREATE TABLE IF NOT EXISTS tasks (
id VARCHAR(255) PRIMARY KEY,
title TEXT NOT NULL,
description TEXT,
completed BOOLEAN NOT NULL DEFAULT FALSE,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
completed_at TIMESTAMP WITH TIME ZONE
);
-- Baby Milestones table
CREATE TABLE IF NOT EXISTS baby_milestones (
id VARCHAR(255) PRIMARY KEY,
title TEXT NOT NULL,
description TEXT NOT NULL,
date DATE NOT NULL,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
);
-- Math Resources table
CREATE TABLE IF NOT EXISTS math_resources (
id VARCHAR(255) PRIMARY KEY,
title TEXT NOT NULL,
content TEXT NOT NULL,
grade VARCHAR(50),
difficulty VARCHAR(50),
tags TEXT[] DEFAULT '{}',
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
);
-- Game Wishlist table
CREATE TABLE IF NOT EXISTS game_wishlist (
id VARCHAR(255) PRIMARY KEY,
game_name TEXT NOT NULL,
platform VARCHAR(100),
notes TEXT,
added_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
);
-- Create indexes for better search performance
CREATE INDEX IF NOT EXISTS idx_code_snippets_tags ON code_snippets USING GIN(tags);
CREATE INDEX IF NOT EXISTS idx_code_snippets_language ON code_snippets(language);
CREATE INDEX IF NOT EXISTS idx_code_snippets_category ON code_snippets(category);
CREATE INDEX IF NOT EXISTS idx_notes_tags ON notes USING GIN(tags);
CREATE INDEX IF NOT EXISTS idx_tasks_completed ON tasks(completed);
CREATE INDEX IF NOT EXISTS idx_tasks_created_at ON tasks(created_at);
CREATE INDEX IF NOT EXISTS idx_baby_milestones_date ON baby_milestones(date);
CREATE INDEX IF NOT EXISTS idx_math_resources_tags ON math_resources USING GIN(tags);
CREATE INDEX IF NOT EXISTS idx_math_resources_grade ON math_resources(grade);
CREATE INDEX IF NOT EXISTS idx_math_resources_difficulty ON math_resources(difficulty);
CREATE INDEX IF NOT EXISTS idx_game_wishlist_platform ON game_wishlist(platform);