40 lines
1.7 KiB
SQL
40 lines
1.7 KiB
SQL
-- KI-Anbieter mit OpenAI-kompatibler Schnittstelle und eigener Adresse
|
|
-- ====================================================================
|
|
-- Ergänzt die drei festen Anbieter aus 0038 um einen vierten, dessen
|
|
-- Adresse die Verwaltung selbst einträgt — z. B. ein Hoster mit Sitz und
|
|
-- Verarbeitung in der EU oder ein selbst betriebenes Modell. Nur additiv:
|
|
-- neue Spalten und eine erweiterte Prüfregel.
|
|
|
|
alter table public.site_settings
|
|
add column if not exists ai_compatible_name text,
|
|
add column if not exists ai_compatible_base_url text,
|
|
add column if not exists ai_compatible_key text,
|
|
add column if not exists ai_compatible_model text;
|
|
|
|
-- Die Prüfregel aus 0038 hat einen automatisch vergebenen Namen; sie wird
|
|
-- über ihre Definition gefunden und mit 'compatible' neu angelegt.
|
|
do $$
|
|
declare c record;
|
|
begin
|
|
for c in
|
|
select conname
|
|
from pg_constraint
|
|
where conrelid = 'public.site_settings'::regclass
|
|
and contype = 'c'
|
|
and pg_get_constraintdef(oid) like '%ai_active_provider%'
|
|
loop
|
|
execute format('alter table public.site_settings drop constraint %I', c.conname);
|
|
end loop;
|
|
end $$;
|
|
|
|
alter table public.site_settings
|
|
add constraint site_settings_ai_active_provider_check
|
|
check (ai_active_provider in ('anthropic', 'openai', 'openrouter', 'compatible'));
|
|
|
|
-- Nur verschlüsselte Verbindungen: Über die Schnittstelle gehen
|
|
-- personenbezogene Daten.
|
|
alter table public.site_settings drop constraint if exists site_settings_ai_compatible_base_url_https;
|
|
alter table public.site_settings
|
|
add constraint site_settings_ai_compatible_base_url_https
|
|
check (ai_compatible_base_url is null or ai_compatible_base_url ~ '^https://');
|