Files
hive/database/init_test.sql
anthonyrawlins 268214d971 Major WHOOSH system refactoring and feature enhancements
- Migrated from HIVE branding to WHOOSH across all components
- Enhanced backend API with new services: AI models, BZZZ integration, templates, members
- Added comprehensive testing suite with security, performance, and integration tests
- Improved frontend with new components for project setup, AI models, and team management
- Updated MCP server implementation with WHOOSH-specific tools and resources
- Enhanced deployment configurations with production-ready Docker setups
- Added comprehensive documentation and setup guides
- Implemented age encryption service and UCXL integration

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-27 08:34:48 +10:00

93 lines
3.7 KiB
PL/PgSQL

-- WHOOSH Test Database Initialization Script
-- Create test database extensions
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE EXTENSION IF NOT EXISTS "pgcrypto";
-- Create basic test tables for integration testing
-- Note: These are simplified versions for testing purposes
-- Users table
CREATE TABLE IF NOT EXISTS users (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
username VARCHAR(100) NOT NULL UNIQUE,
email VARCHAR(255) NOT NULL UNIQUE,
hashed_password VARCHAR(255) NOT NULL,
is_active BOOLEAN DEFAULT true,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Projects table
CREATE TABLE IF NOT EXISTS projects (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
name VARCHAR(255) NOT NULL,
description TEXT,
owner_id UUID REFERENCES users(id) ON DELETE CASCADE,
gitea_repo_url VARCHAR(500),
gitea_repo_id INTEGER,
age_public_key TEXT,
template_id VARCHAR(100),
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Project members table
CREATE TABLE IF NOT EXISTS project_members (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
project_id UUID REFERENCES projects(id) ON DELETE CASCADE,
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
role VARCHAR(50) NOT NULL CHECK (role IN ('owner', 'maintainer', 'developer', 'viewer')),
invited_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
accepted_at TIMESTAMP WITH TIME ZONE,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Templates table (for tracking template usage)
CREATE TABLE IF NOT EXISTS template_usage (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
template_id VARCHAR(100) NOT NULL,
project_id UUID REFERENCES projects(id) ON DELETE CASCADE,
files_created INTEGER DEFAULT 0,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Insert test data
INSERT INTO users (username, email, hashed_password) VALUES
('testuser', 'test@whoosh.dev', crypt('testpass123', gen_salt('bf'))),
('admin', 'admin@whoosh.dev', crypt('admin123', gen_salt('bf')))
ON CONFLICT (email) DO NOTHING;
INSERT INTO projects (name, description, owner_id, template_id) VALUES
('Test Project 1', 'Integration test project', (SELECT id FROM users WHERE username = 'testuser'), 'fullstack-web-app'),
('Test Project 2', 'Template test project', (SELECT id FROM users WHERE username = 'admin'), 'react-fastapi')
ON CONFLICT DO NOTHING;
-- Create indexes for better performance
CREATE INDEX IF NOT EXISTS idx_projects_owner_id ON projects(owner_id);
CREATE INDEX IF NOT EXISTS idx_project_members_project_id ON project_members(project_id);
CREATE INDEX IF NOT EXISTS idx_project_members_user_id ON project_members(user_id);
CREATE INDEX IF NOT EXISTS idx_template_usage_project_id ON template_usage(project_id);
-- Create test database functions
CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;
$$ language 'plpgsql';
-- Create triggers for automatic timestamp updates
CREATE TRIGGER update_users_updated_at BEFORE UPDATE ON users FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
CREATE TRIGGER update_projects_updated_at BEFORE UPDATE ON projects FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
-- Grant permissions
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO whoosh;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO whoosh;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO whoosh;
-- Test data verification
SELECT 'Database initialization completed successfully' as status;
SELECT COUNT(*) as user_count FROM users;
SELECT COUNT(*) as project_count FROM projects;