Initial commit: Virtual Board Member AI System foundation
This commit is contained in:
68
scripts/init-db.sql
Normal file
68
scripts/init-db.sql
Normal file
@@ -0,0 +1,68 @@
|
||||
-- Database initialization script for Virtual Board Member AI System
|
||||
|
||||
-- Create extensions
|
||||
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
||||
CREATE EXTENSION IF NOT EXISTS "pg_trgm";
|
||||
|
||||
-- Create custom types
|
||||
DO $$ BEGIN
|
||||
CREATE TYPE user_role AS ENUM (
|
||||
'board_member',
|
||||
'executive',
|
||||
'executive_assistant',
|
||||
'analyst',
|
||||
'auditor',
|
||||
'admin'
|
||||
);
|
||||
EXCEPTION
|
||||
WHEN duplicate_object THEN null;
|
||||
END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
CREATE TYPE document_type AS ENUM (
|
||||
'report',
|
||||
'presentation',
|
||||
'minutes',
|
||||
'financial',
|
||||
'legal',
|
||||
'other'
|
||||
);
|
||||
EXCEPTION
|
||||
WHEN duplicate_object THEN null;
|
||||
END $$;
|
||||
|
||||
DO $$ BEGIN
|
||||
CREATE TYPE commitment_status AS ENUM (
|
||||
'pending',
|
||||
'in_progress',
|
||||
'completed',
|
||||
'overdue',
|
||||
'cancelled'
|
||||
);
|
||||
EXCEPTION
|
||||
WHEN duplicate_object THEN null;
|
||||
END $$;
|
||||
|
||||
-- Create indexes for better performance
|
||||
CREATE INDEX IF NOT EXISTS idx_users_email ON users(email);
|
||||
CREATE INDEX IF NOT EXISTS idx_users_username ON users(username);
|
||||
CREATE INDEX IF NOT EXISTS idx_users_role ON users(role);
|
||||
CREATE INDEX IF NOT EXISTS idx_documents_created_at ON documents(created_at);
|
||||
CREATE INDEX IF NOT EXISTS idx_documents_type ON documents(document_type);
|
||||
CREATE INDEX IF NOT EXISTS idx_commitments_deadline ON commitments(deadline);
|
||||
CREATE INDEX IF NOT EXISTS idx_commitments_status ON commitments(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_audit_logs_timestamp ON audit_logs(timestamp);
|
||||
CREATE INDEX IF NOT EXISTS idx_audit_logs_user_id ON audit_logs(user_id);
|
||||
|
||||
-- Create full-text search indexes
|
||||
CREATE INDEX IF NOT EXISTS idx_documents_content_fts ON documents USING gin(to_tsvector('english', content));
|
||||
CREATE INDEX IF NOT EXISTS idx_commitments_description_fts ON commitments USING gin(to_tsvector('english', description));
|
||||
|
||||
-- Create trigram indexes for fuzzy search
|
||||
CREATE INDEX IF NOT EXISTS idx_documents_title_trgm ON documents USING gin(title gin_trgm_ops);
|
||||
CREATE INDEX IF NOT EXISTS idx_commitments_description_trgm ON commitments USING gin(description gin_trgm_ops);
|
||||
|
||||
-- Grant permissions
|
||||
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO vbm_user;
|
||||
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO vbm_user;
|
||||
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO vbm_user;
|
||||
Reference in New Issue
Block a user