- 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>
52 lines
2.1 KiB
SQL
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';
|