Spaces:
Runtime error
Runtime error
| -- AI Lead Generation Database Schema | |
| -- This file contains the database schema for Supabase | |
| -- Enable UUID extension | |
| CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; | |
| -- User Preferences Table | |
| -- Stores user configuration and settings for lead generation | |
| CREATE TABLE IF NOT EXISTS user_preferences ( | |
| id UUID DEFAULT uuid_generate_v4() PRIMARY KEY, | |
| email VARCHAR(255) UNIQUE NOT NULL, | |
| search_criteria TEXT NOT NULL, | |
| system_prompt TEXT NOT NULL, | |
| preferences TEXT NOT NULL, | |
| schedule_enabled BOOLEAN DEFAULT false, | |
| created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), | |
| updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() | |
| ); | |
| -- Create indexes for better performance | |
| CREATE INDEX IF NOT EXISTS idx_user_preferences_email ON user_preferences(email); | |
| CREATE INDEX IF NOT EXISTS idx_user_preferences_schedule_enabled ON user_preferences(schedule_enabled); | |
| CREATE INDEX IF NOT EXISTS idx_user_preferences_created_at ON user_preferences(created_at); | |
| -- Add RLS (Row Level Security) policies | |
| ALTER TABLE user_preferences ENABLE ROW LEVEL SECURITY; | |
| -- Policy to allow users to read their own preferences | |
| DROP POLICY IF EXISTS "Users can read their own preferences" ON user_preferences; | |
| CREATE POLICY "Users can read their own preferences" ON user_preferences | |
| FOR SELECT USING (true); | |
| -- Policy to allow users to insert their own preferences | |
| DROP POLICY IF EXISTS "Users can insert their own preferences" ON user_preferences; | |
| CREATE POLICY "Users can insert their own preferences" ON user_preferences | |
| FOR INSERT WITH CHECK (true); | |
| -- Policy to allow users to update their own preferences | |
| DROP POLICY IF EXISTS "Users can update their own preferences" ON user_preferences; | |
| CREATE POLICY "Users can update their own preferences" ON user_preferences | |
| FOR UPDATE USING (true); | |
| -- Policy to allow users to delete their own preferences | |
| DROP POLICY IF EXISTS "Users can delete their own preferences" ON user_preferences; | |
| CREATE POLICY "Users can delete their own preferences" ON user_preferences | |
| FOR DELETE USING (true); | |
| -- Optional: Create a function to automatically update the updated_at timestamp | |
| CREATE OR REPLACE FUNCTION update_updated_at_column() | |
| RETURNS TRIGGER AS $$ | |
| BEGIN | |
| NEW.updated_at = NOW(); | |
| RETURN NEW; | |
| END; | |
| $$ language 'plpgsql'; | |
| -- Create trigger to automatically update updated_at | |
| DROP TRIGGER IF EXISTS update_user_preferences_updated_at ON user_preferences; | |
| CREATE TRIGGER update_user_preferences_updated_at | |
| BEFORE UPDATE ON user_preferences | |
| FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); | |
| -- Comments for documentation | |
| COMMENT ON TABLE user_preferences IS 'Stores user preferences and settings for AI lead generation'; | |
| COMMENT ON COLUMN user_preferences.id IS 'Unique identifier for the user preference record'; | |
| COMMENT ON COLUMN user_preferences.email IS 'User email address (unique identifier)'; | |
| COMMENT ON COLUMN user_preferences.search_criteria IS 'Search keywords and criteria for lead discovery'; | |
| COMMENT ON COLUMN user_preferences.system_prompt IS 'AI system prompt for lead analysis'; | |
| COMMENT ON COLUMN user_preferences.preferences IS 'User targeting preferences and scoring criteria'; | |
| COMMENT ON COLUMN user_preferences.schedule_enabled IS 'Whether daily scheduling is enabled for this user'; | |
| COMMENT ON COLUMN user_preferences.created_at IS 'Timestamp when the record was created'; | |
| COMMENT ON COLUMN user_preferences.updated_at IS 'Timestamp when the record was last updated'; | |