- 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>
93 lines
3.7 KiB
PL/PgSQL
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; |