Vijayadhith7's picture
Upload 29 files
57a1132 verified
-- Drop existing tables to start fresh (Optional, run with caution)
-- DROP TABLE IF EXISTS ai_insights CASCADE;
-- DROP TABLE IF EXISTS admissions CASCADE;
-- DROP TABLE IF EXISTS follow_ups CASCADE;
-- DROP TABLE IF EXISTS leads CASCADE;
-- DROP TABLE IF EXISTS counselors CASCADE;
-- 1. Counselors Table
CREATE TABLE counselors (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
phone VARCHAR(50),
branch VARCHAR(100),
role VARCHAR(50) DEFAULT 'Counselor',
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- 2. Leads Table
CREATE TABLE leads (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name VARCHAR(255) NOT NULL,
phone VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(255),
course_interested VARCHAR(255),
source VARCHAR(100),
status VARCHAR(50) DEFAULT 'New',
lead_score INTEGER DEFAULT 0,
counselor_id UUID REFERENCES counselors(id) ON DELETE SET NULL,
notes TEXT,
last_followup TIMESTAMP WITH TIME ZONE,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- 3. FollowUps Table
CREATE TABLE follow_ups (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
lead_id UUID REFERENCES leads(id) ON DELETE CASCADE,
followup_date TIMESTAMP WITH TIME ZONE NOT NULL,
followup_type VARCHAR(50), -- e.g., 'Call', 'WhatsApp', 'Email'
status VARCHAR(50) DEFAULT 'Pending',
remarks TEXT,
created_by UUID REFERENCES counselors(id) ON DELETE SET NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- 4. Admissions Table
CREATE TABLE admissions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
lead_id UUID REFERENCES leads(id) ON DELETE CASCADE,
course VARCHAR(255) NOT NULL,
fees NUMERIC(10, 2),
payment_status VARCHAR(50) DEFAULT 'Pending',
joined_date TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- 5. AI Insights Table
CREATE TABLE ai_insights (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
type VARCHAR(50), -- e.g., 'Warning', 'Opportunity', 'Trend'
message TEXT NOT NULL,
priority VARCHAR(50) DEFAULT 'Normal',
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- Function to automatically update the 'updated_at' timestamp on the leads table
CREATE OR REPLACE FUNCTION update_modified_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = CURRENT_TIMESTAMP;
RETURN NEW;
END;
$$ language 'plpgsql';
CREATE TRIGGER update_leads_modtime
BEFORE UPDATE ON leads
FOR EACH ROW
EXECUTE FUNCTION update_modified_column();