migrations/20260630000002_hub_refs.up.sql
Rama main · réplica de lectura del repositorio original.
CREATE TABLE IF NOT EXISTS shardline_hub_refs (
repo_id TEXT NOT NULL,
ref_name TEXT NOT NULL,
sha TEXT NOT NULL,
PRIMARY KEY (repo_id, ref_name),
FOREIGN KEY (repo_id) REFERENCES shardline_hub_repos(repo_id) ON DELETE CASCADE
);
-- Preserve existing repositories when upgrading. Branch refs are stored in
-- their short Hub spelling so `main` and Git's `refs/heads/main` are one ref.
INSERT INTO shardline_hub_refs (repo_id, ref_name, sha)
SELECT revision.repo_id,
CASE
WHEN revision.ref_name LIKE 'refs/heads/%' THEN substr(revision.ref_name, 12)
ELSE revision.ref_name
END,
revision.sha
FROM shardline_hub_revisions AS revision
WHERE revision.ref_name <> 'HEAD'
AND NOT EXISTS (
SELECT 1
FROM shardline_hub_revisions AS newer
WHERE newer.repo_id = revision.repo_id
AND (
CASE
WHEN newer.ref_name LIKE 'refs/heads/%' THEN substr(newer.ref_name, 12)
ELSE newer.ref_name
END
) = (
CASE
WHEN revision.ref_name LIKE 'refs/heads/%' THEN substr(revision.ref_name, 12)
ELSE revision.ref_name
END
)
AND (
newer.created_at_unix_seconds > revision.created_at_unix_seconds
OR (
newer.created_at_unix_seconds = revision.created_at_unix_seconds
AND newer.sha > revision.sha
)
)
);