trading-platform-database-v2/ddl/schemas/auth/tables/12-user_push_tokens.sql
Adrian Flores Cortes 439489bde4 feat: Add DDL tables for notifications system
- Add auth.notifications table for storing user notifications
- Add auth.user_push_tokens table for FCM/APNs tokens
- Add investment.distribution_history for daily distribution records
- Add investment.distribution_runs for job execution logs

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 03:48:28 -06:00

52 lines
2.1 KiB
SQL

-- ============================================================================
-- OrbiQuant IA - Trading Platform
-- Schema: auth
-- File: tables/12-user_push_tokens.sql
-- Description: User push notification tokens for FCM/APNs/Web Push
-- ============================================================================
CREATE TABLE auth.user_push_tokens (
-- Primary Key
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
-- Foreign Key to Users
user_id UUID NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE,
-- Token Information
token TEXT NOT NULL,
platform VARCHAR(20) NOT NULL,
-- Device Information
device_info JSONB,
-- Status
is_active BOOLEAN NOT NULL DEFAULT TRUE,
last_used_at TIMESTAMPTZ,
-- Audit
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
-- Constraints
CONSTRAINT valid_platform CHECK (platform IN ('web', 'ios', 'android')),
CONSTRAINT unique_token UNIQUE (token)
);
-- Indexes for Performance
CREATE INDEX idx_push_tokens_user ON auth.user_push_tokens(user_id) WHERE is_active = TRUE;
CREATE INDEX idx_push_tokens_platform ON auth.user_push_tokens(platform);
-- Table Comments
COMMENT ON TABLE auth.user_push_tokens IS 'Push notification tokens for FCM, APNs, and Web Push';
-- Column Comments
COMMENT ON COLUMN auth.user_push_tokens.id IS 'Unique identifier for the token record';
COMMENT ON COLUMN auth.user_push_tokens.user_id IS 'Reference to the user owning this token';
COMMENT ON COLUMN auth.user_push_tokens.token IS 'The push notification token string';
COMMENT ON COLUMN auth.user_push_tokens.platform IS 'Platform type (web, ios, android)';
COMMENT ON COLUMN auth.user_push_tokens.device_info IS 'Device metadata as JSON (model, os_version, app_version, etc.)';
COMMENT ON COLUMN auth.user_push_tokens.is_active IS 'Whether the token is currently valid';
COMMENT ON COLUMN auth.user_push_tokens.last_used_at IS 'Timestamp of last successful notification sent';
COMMENT ON COLUMN auth.user_push_tokens.created_at IS 'Timestamp when token was registered';
COMMENT ON COLUMN auth.user_push_tokens.updated_at IS 'Timestamp when token was last updated';