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>
This commit is contained in:
93
database/init_test.sql
Normal file
93
database/init_test.sql
Normal file
@@ -0,0 +1,93 @@
|
||||
-- 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;
|
||||
Reference in New Issue
Block a user