| 123456789101112131415161718192021222324252627282930 |
- CREATE TABLE IF NOT EXISTS composite_model_routes (
- id BIGSERIAL PRIMARY KEY,
- group_id BIGINT NOT NULL REFERENCES groups(id) ON DELETE CASCADE,
- public_model VARCHAR(200) NOT NULL,
- match_type VARCHAR(20) NOT NULL DEFAULT 'exact',
- target_platform VARCHAR(50) NOT NULL,
- upstream_model VARCHAR(200) NOT NULL DEFAULT '',
- endpoint VARCHAR(50) NOT NULL DEFAULT 'any',
- priority INTEGER NOT NULL DEFAULT 100,
- enabled BOOLEAN NOT NULL DEFAULT TRUE,
- notes TEXT,
- created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
- updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
- deleted_at TIMESTAMPTZ NULL,
- CONSTRAINT composite_model_routes_match_type_check CHECK (match_type IN ('exact', 'prefix')),
- CONSTRAINT composite_model_routes_endpoint_check CHECK (endpoint IN ('any', 'messages', 'count_tokens', 'responses', 'chat_completions', 'embeddings', 'images', 'gemini')),
- CONSTRAINT composite_model_routes_target_platform_check CHECK (target_platform IN ('anthropic', 'openai', 'gemini', 'antigravity', 'grok'))
- );
- CREATE UNIQUE INDEX IF NOT EXISTS idx_composite_model_routes_unique_active
- ON composite_model_routes (group_id, endpoint, match_type, public_model)
- WHERE deleted_at IS NULL;
- CREATE INDEX IF NOT EXISTS idx_composite_model_routes_group_enabled
- ON composite_model_routes (group_id, enabled)
- WHERE deleted_at IS NULL;
- CREATE INDEX IF NOT EXISTS idx_composite_model_routes_group_priority
- ON composite_model_routes (group_id, priority, id)
- WHERE deleted_at IS NULL;
|