Files
Starlight_Lancher/packages/app-lib/migrations/20260715120000_content-providers.sql

50 lines
1.2 KiB
SQL

ALTER TABLE instance_links
ADD COLUMN curseforge_project_id INTEGER NULL;
ALTER TABLE instance_links
ADD COLUMN curseforge_file_id INTEGER NULL;
CREATE INDEX instance_links_curseforge_project_id
ON instance_links(curseforge_project_id);
CREATE TABLE instance_content_provider_refs (
content_entry_id TEXT NOT NULL,
provider TEXT NOT NULL,
project_id TEXT NOT NULL,
version_id TEXT NULL,
primary_ref INTEGER NOT NULL DEFAULT 0,
PRIMARY KEY (content_entry_id, provider),
FOREIGN KEY (content_entry_id)
REFERENCES instance_content_entries(id)
ON DELETE CASCADE,
CHECK (provider IN ('modrinth', 'curseforge')),
CHECK (primary_ref IN (0, 1))
);
CREATE INDEX instance_content_provider_refs_project
ON instance_content_provider_refs(provider, project_id);
CREATE INDEX instance_content_provider_refs_version
ON instance_content_provider_refs(provider, version_id);
CREATE UNIQUE INDEX instance_content_provider_refs_primary
ON instance_content_provider_refs(content_entry_id)
WHERE primary_ref = 1;
INSERT OR IGNORE INTO instance_content_provider_refs (
content_entry_id,
provider,
project_id,
version_id,
primary_ref
)
SELECT
id,
'modrinth',
project_id,
version_id,
1
FROM instance_content_entries
WHERE project_id IS NOT NULL;