27 lines
1.2 KiB
SQL
27 lines
1.2 KiB
SQL
-- 039: Device tokens for push notification channels
|
|
-- Stores device push tokens per user, supporting multiple channels:
|
|
-- FCM (Google), APNs (Apple), HMS (Huawei), XIAOMI, OPPO, VIVO
|
|
|
|
CREATE TABLE device_tokens (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
user_id UUID NOT NULL,
|
|
platform VARCHAR(20) NOT NULL CHECK (platform IN ('ANDROID','IOS')),
|
|
channel VARCHAR(20) NOT NULL CHECK (channel IN ('FCM','APNS','HMS','XIAOMI','OPPO','VIVO')),
|
|
token TEXT NOT NULL,
|
|
device_id VARCHAR(200),
|
|
device_model VARCHAR(200),
|
|
app_version VARCHAR(50),
|
|
is_active BOOLEAN NOT NULL DEFAULT true,
|
|
last_used_at TIMESTAMPTZ,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE UNIQUE INDEX idx_device_tokens_token ON device_tokens(token);
|
|
CREATE INDEX idx_device_tokens_user_active ON device_tokens(user_id, is_active);
|
|
|
|
-- Add PROMOTION type to announcements for advertisement / promotional push
|
|
ALTER TABLE announcements DROP CONSTRAINT IF EXISTS announcements_type_check;
|
|
ALTER TABLE announcements ADD CONSTRAINT announcements_type_check
|
|
CHECK (type IN ('SYSTEM','ACTIVITY','REWARD','UPGRADE','ANNOUNCEMENT','PROMOTION'));
|