28 lines
1.3 KiB
MySQL
28 lines
1.3 KiB
MySQL
|
|
-- Support tickets
|
||
|
|
CREATE TABLE IF NOT EXISTS support_tickets (
|
||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
|
|
user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||
|
|
subject VARCHAR(500) NOT NULL,
|
||
|
|
category VARCHAR(50) NOT NULL DEFAULT 'GENERAL', -- GENERAL, BILLING, ACCOUNT, LEAD, JOB
|
||
|
|
status VARCHAR(20) NOT NULL DEFAULT 'OPEN', -- OPEN, IN_PROGRESS, RESOLVED, CLOSED
|
||
|
|
priority VARCHAR(10) NOT NULL DEFAULT 'NORMAL', -- LOW, NORMAL, HIGH, URGENT
|
||
|
|
assigned_to UUID REFERENCES users(id),
|
||
|
|
resolved_at TIMESTAMPTZ,
|
||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Support ticket messages
|
||
|
|
CREATE TABLE IF NOT EXISTS support_ticket_messages (
|
||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
|
|
ticket_id UUID NOT NULL REFERENCES support_tickets(id) ON DELETE CASCADE,
|
||
|
|
sender_id UUID NOT NULL REFERENCES users(id),
|
||
|
|
body TEXT NOT NULL,
|
||
|
|
is_internal BOOLEAN NOT NULL DEFAULT false, -- true = staff-only note
|
||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_support_tickets_user_id ON support_tickets(user_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_support_tickets_status ON support_tickets(status);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_support_ticket_messages_ticket_id ON support_ticket_messages(ticket_id);
|