Skip to content
This repository was archived by the owner on Dec 14, 2025. It is now read-only.

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

Database Documentation

Overview

This section contains documentation for all database-related aspects of Elluminar, including schema design, migrations, triggers, and Row Level Security (RLS) policies.

Current Database Setup

Database Provider: Supabase (PostgreSQL)
Version: PostgreSQL 15+
Authentication: Supabase Auth integrated with custom user tables

Documentation Structure

📊 Schema Documentation

🔄 Migrations

🔐 Security & Policies

  • rls-policies/ - Row Level Security policy documentation and examples

Key Features

Automatic User Management

  • Database Triggers: Automatically create user records when Supabase Auth creates users
  • Profile Creation: Default consultee profiles created automatically
  • CUID Integration: Bridge between Supabase Auth UUIDs and existing CUID system

Row Level Security (RLS)

  • User Isolation: Users can only access their own data
  • Role-Based Access: Different permissions for consultants, consultees, staff, and admins
  • Service Role Access: Elevated permissions for database triggers and server operations

Schema Highlights

Core Tables

  • users: Central user table with CUID and email bridge to Supabase Auth
  • ConsultantProfile: Consultant-specific data and ratings
  • ConsulteeProfile: Consultee preferences and communication settings
  • StaffProfile: Staff and admin user profiles
  • Domain: Consultation domains/categories

Relationship Design

  • Email-Based Linking: Uses email as natural bridge between auth systems
  • Foreign Key Integrity: Proper relationships between all tables
  • Audit Fields: Created/updated timestamps on all tables

Getting Started

For Developers

  1. Review Schema: Start with schema/supabase-schema.md
  2. Understand Migrations: Read migrations/trigger-migration.md
  3. Check RLS Policies: Review security model in rls-policies/

For Database Administrators

  1. Migration Setup: Use files in ../../scripts/supabase/migrations/
  2. Monitor Triggers: Check trigger execution and performance
  3. RLS Monitoring: Ensure security policies are working correctly

Database Operations

Backup Strategy

  • Supabase Automatic: Daily automated backups
  • Point-in-Time Recovery: Available for the last 7 days
  • Manual Snapshots: Created before major migrations

Performance Monitoring

  • Query Performance: Monitor slow queries and optimize
  • Trigger Performance: Track trigger execution times
  • Connection Pooling: Supabase handles connection management

Security Auditing

  • RLS Policy Review: Regular review of security policies
  • Access Logging: Monitor database access patterns
  • Permission Audits: Verify user permissions are appropriate

Migration History

Major Migrations

  1. Initial Schema (August 2025)

    • Created all core tables
    • Set up basic RLS policies
    • Established foreign key relationships
  2. Trigger-Based Authentication (August 31, 2025) ⭐

    • Added handle_new_user() trigger function
    • Updated RLS policies for server-side operations
    • Resolved authentication context issues
    • Status: ✅ Successfully deployed and tested

Troubleshooting

Common Issues

Authentication Context Problems

  • Symptom: RLS permission errors during client operations
  • Solution: Database triggers handle user creation server-side
  • Documentation: Authentication Troubleshooting

Migration Failures

  • Symptom: Migration scripts fail to apply
  • Solution: Check permissions and dependencies
  • Documentation: Migration Troubleshooting

Performance Issues

  • Symptom: Slow queries or trigger execution
  • Solution: Analyze query plans and add indexes
  • Monitoring: Use Supabase dashboard performance metrics

Getting Help

  1. Check Logs: Supabase dashboard → Logs section
  2. Query Performance: Dashboard → Performance insights
  3. Schema Visualization: Dashboard → Table editor
  4. SQL Editor: Dashboard → SQL editor for debugging

Related Documentation

External Resources