58 lines
2.8 KiB
SQL
58 lines
2.8 KiB
SQL
CREATE TABLE IF NOT EXISTS api_providers (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
name VARCHAR(128) NOT NULL UNIQUE,
|
|
default_api_url TEXT,
|
|
default_model VARCHAR(255),
|
|
type VARCHAR(16) NOT NULL DEFAULT 'image',
|
|
website TEXT,
|
|
is_active BOOLEAN NOT NULL DEFAULT true,
|
|
sort_order INTEGER NOT NULL DEFAULT 0,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
updated_at TIMESTAMPTZ
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS model_recommendations (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
model_name VARCHAR(255) NOT NULL,
|
|
display_name VARCHAR(255),
|
|
type VARCHAR(16) NOT NULL DEFAULT 'image',
|
|
provider_id UUID REFERENCES api_providers(id) ON DELETE SET NULL,
|
|
is_active BOOLEAN NOT NULL DEFAULT true,
|
|
sort_order INTEGER NOT NULL DEFAULT 0,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
updated_at TIMESTAMPTZ
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS api_providers_active_sort_idx ON api_providers (is_active, sort_order);
|
|
CREATE INDEX IF NOT EXISTS model_recommendations_active_type_sort_idx ON model_recommendations (is_active, type, sort_order);
|
|
CREATE INDEX IF NOT EXISTS model_recommendations_provider_idx ON model_recommendations (provider_id);
|
|
|
|
INSERT INTO api_providers (name, default_api_url, default_model, type, website, is_active, sort_order)
|
|
VALUES
|
|
('硅基流动', 'https://api.siliconflow.cn/v1/images/generations', 'black-forest-labs/FLUX.1-schnell', 'image', 'https://cloud.siliconflow.cn', true, 10),
|
|
('mozheAPI', 'https://openai.mozhevip.top', '', 'image', 'https://openai.mozhevip.top', true, 20),
|
|
('OpenAI', 'https://api.openai.com/v1/images/generations', 'dall-e-3', 'image', NULL, true, 30),
|
|
('Stability AI', 'https://api.stability.ai/v1/generation/stable-diffusion-xl/text-to-image', 'stable-diffusion-xl', 'image', NULL, true, 40),
|
|
('Midjourney', '', 'midjourney-v6', 'image', NULL, true, 50),
|
|
('Runway', 'https://api.runwayml.com/v1/image_to_video', 'gen-3-alpha', 'video', NULL, true, 60),
|
|
('Pika', '', 'pika-1.0', 'video', NULL, true, 70),
|
|
('Kling', '', 'kling-v1', 'video', NULL, true, 80),
|
|
('DeepSeek', 'https://api.deepseek.com/v1/chat/completions', 'deepseek-chat', 'text', NULL, true, 90),
|
|
('OpenAI GPT', 'https://api.openai.com/v1/chat/completions', 'gpt-4o', 'text', NULL, true, 100),
|
|
('自定义', '', '', 'image', NULL, true, 999)
|
|
ON CONFLICT (name) DO UPDATE SET
|
|
default_api_url = EXCLUDED.default_api_url,
|
|
default_model = EXCLUDED.default_model,
|
|
type = EXCLUDED.type,
|
|
website = EXCLUDED.website,
|
|
is_active = EXCLUDED.is_active,
|
|
sort_order = EXCLUDED.sort_order,
|
|
updated_at = NOW();
|
|
|
|
INSERT INTO model_recommendations (model_name, display_name, type, provider_id, is_active, sort_order)
|
|
SELECT 'gpt-image-2', 'gpt-image-2', 'image', NULL, true, 10
|
|
WHERE NOT EXISTS (
|
|
SELECT 1 FROM model_recommendations
|
|
WHERE model_name = 'gpt-image-2' AND type = 'image' AND provider_id IS NULL
|
|
);
|