Initial BizOne portal setup

This commit is contained in:
2026-05-11 11:36:33 +07:00
commit 57017dd397
249 changed files with 41305 additions and 0 deletions

View File

@ -0,0 +1,47 @@
CREATE TABLE campaigns (
id TEXT PRIMARY KEY,
code TEXT NOT NULL UNIQUE,
name TEXT NOT NULL,
audience_label TEXT NOT NULL,
audience_group TEXT NOT NULL,
status TEXT NOT NULL,
total_recipients INTEGER NOT NULL DEFAULT 0,
delivered_count INTEGER NOT NULL DEFAULT 0,
read_count INTEGER NOT NULL DEFAULT 0,
failed_count INTEGER NOT NULL DEFAULT 0,
delivery_rate DOUBLE PRECISION,
read_rate DOUBLE PRECISION,
sent_at TIMESTAMP(3),
scheduled_at TIMESTAMP(3),
template_name TEXT,
language TEXT,
message_title TEXT,
message_body TEXT,
primary_button TEXT,
secondary_button TEXT,
banner_image_url TEXT,
created_at TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE campaign_recipients (
id TEXT PRIMARY KEY,
campaign_id TEXT NOT NULL,
phone_number TEXT NOT NULL,
status TEXT NOT NULL,
sent_at TIMESTAMP(3),
error_reason TEXT,
device_os TEXT,
created_at TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT campaign_recipients_campaign_id_fkey
FOREIGN KEY (campaign_id) REFERENCES campaigns(id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE INDEX campaign_recipients_campaign_id_status_idx
ON campaign_recipients(campaign_id, status);
CREATE INDEX campaign_recipients_campaign_id_sent_at_idx
ON campaign_recipients(campaign_id, sent_at);