gcx/backend/migrations/039_create_device_tokens.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'));