57 lines
1.9 KiB
SQL
57 lines
1.9 KiB
SQL
DROP INDEX IF EXISTS instance_content_provider_refs_project;
|
|
DROP INDEX IF EXISTS instance_content_provider_refs_release;
|
|
DROP INDEX IF EXISTS instance_content_provider_refs_identity;
|
|
DROP INDEX IF EXISTS instance_content_provider_refs_origin;
|
|
|
|
ALTER TABLE instance_content_provider_refs RENAME TO instance_content_provider_refs_old;
|
|
|
|
CREATE TABLE instance_content_provider_refs (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
content_entry_id TEXT NOT NULL,
|
|
provider TEXT NOT NULL,
|
|
provider_project_id TEXT NOT NULL,
|
|
provider_release_id TEXT NULL,
|
|
provider_file_id TEXT NULL,
|
|
is_origin INTEGER NOT NULL DEFAULT 0,
|
|
|
|
FOREIGN KEY (content_entry_id)
|
|
REFERENCES instance_content_entries(id)
|
|
ON DELETE CASCADE,
|
|
CHECK (provider IN ('modrinth', 'curseforge', 'mcarchive')),
|
|
CHECK (is_origin IN (0, 1))
|
|
);
|
|
|
|
CREATE INDEX instance_content_provider_refs_project
|
|
ON instance_content_provider_refs(provider, provider_project_id);
|
|
CREATE INDEX instance_content_provider_refs_release
|
|
ON instance_content_provider_refs(provider, provider_release_id);
|
|
CREATE INDEX instance_content_provider_refs_file
|
|
ON instance_content_provider_refs(provider, provider_file_id);
|
|
CREATE UNIQUE INDEX instance_content_provider_refs_identity
|
|
ON instance_content_provider_refs(
|
|
content_entry_id,
|
|
provider,
|
|
provider_project_id,
|
|
COALESCE(provider_release_id, ''),
|
|
COALESCE(provider_file_id, '')
|
|
);
|
|
CREATE UNIQUE INDEX instance_content_provider_refs_origin
|
|
ON instance_content_provider_refs(content_entry_id)
|
|
WHERE is_origin = 1;
|
|
|
|
INSERT INTO instance_content_provider_refs (
|
|
id, content_entry_id, provider, provider_project_id,
|
|
provider_release_id, provider_file_id, is_origin
|
|
)
|
|
SELECT
|
|
id,
|
|
content_entry_id,
|
|
provider,
|
|
provider_project_id,
|
|
provider_release_id,
|
|
CASE WHEN provider = 'curseforge' THEN provider_release_id ELSE NULL END,
|
|
is_origin
|
|
FROM instance_content_provider_refs_old;
|
|
|
|
DROP TABLE instance_content_provider_refs_old;
|