- provider_configs: add id TEXT PK; migrate existing rows (provider_type becomes id)
- local_files_index: add provider_id column + index; scope all queries per instance
- ProviderConfigRow: add id field; add get_by_id to trait
- LocalIndex:🆕 add provider_id param; all SQL scoped by provider_id
- factory: thread provider_id through build_local_files_bundle
- AppState.local_index: Option<Arc<LocalIndex>> → HashMap<String, Arc<LocalIndex>>
- admin_providers: restructured routes (POST /admin/providers create, PUT/DELETE /{id}, POST /test)
- admin_providers: use row.id as registry key for jellyfin and local_files
- files.rescan: optional ?provider=<id> query param
- frontend: add id to ProviderConfig, update api/hooks, new multi-instance panel UX
18 lines
767 B
SQL
18 lines
767 B
SQL
-- Recreate provider_configs with per-instance id as PK
|
|
CREATE TABLE provider_configs_new (
|
|
id TEXT PRIMARY KEY,
|
|
provider_type TEXT NOT NULL,
|
|
config_json TEXT NOT NULL,
|
|
enabled INTEGER NOT NULL DEFAULT 1,
|
|
updated_at TEXT NOT NULL
|
|
);
|
|
INSERT INTO provider_configs_new (id, provider_type, config_json, enabled, updated_at)
|
|
SELECT provider_type, provider_type, config_json, enabled, updated_at
|
|
FROM provider_configs;
|
|
DROP TABLE provider_configs;
|
|
ALTER TABLE provider_configs_new RENAME TO provider_configs;
|
|
|
|
-- Scope local_files_index entries by provider instance
|
|
ALTER TABLE local_files_index ADD COLUMN provider_id TEXT NOT NULL DEFAULT 'local';
|
|
CREATE INDEX IF NOT EXISTS idx_local_files_provider ON local_files_index(provider_id);
|