"""Literal SQL for the FC-2d-vii-c artist backfill / artist-tag delete.

Intentionally pure string constants — NO model/slug imports, NO logic —
so migration 0008 and its test share one drift-proof source of truth.
Backfill steps are ordered primary -> provenance -> artist-tag and each
only touches rows still NULL (idempotent, first match wins). The
artist-tag step matches Artist.name = Tag.name: the importer always
created both from the same artist_name string.
"""

BACKFILL_PRIMARY_SQL = """
UPDATE image_record AS ir
SET artist_id = s.artist_id
FROM post p
JOIN source s ON s.id = p.source_id
WHERE ir.primary_post_id = p.id
  AND ir.artist_id IS NULL
"""

BACKFILL_PROVENANCE_SQL = """
UPDATE image_record AS ir
SET artist_id = s.artist_id
FROM (
    SELECT DISTINCT ON (ip.image_record_id)
           ip.image_record_id, src.artist_id
    FROM image_provenance ip
    JOIN source src ON src.id = ip.source_id
    ORDER BY ip.image_record_id, ip.id
) AS s
WHERE ir.id = s.image_record_id
  AND ir.artist_id IS NULL
"""

BACKFILL_TAG_SQL = """
UPDATE image_record AS ir
SET artist_id = a.id
FROM image_tag it
JOIN tag t ON t.id = it.tag_id AND t.kind = 'artist'
JOIN artist a ON a.name = t.name
WHERE it.image_record_id = ir.id
  AND ir.artist_id IS NULL
"""

DELETE_ARTIST_TAGS_SQL = "DELETE FROM tag WHERE kind = 'artist'"
