-- Entwicklungs-Seed (Akzeptanzkriterium 3): legt einen Beispielordner, ein
-- Beispieldokument mit einer Revision, ein Tag und ein Metadatenfeld an.
-- Setzt voraus, dass mindestens ein Benutzer existiert (Core IAM-01 legt
-- users an, DMS tut das nicht selbst - siehe "Nicht Bestandteil" in
-- FDN-02) - schlaegt sonst absichtlich mit einer sprechenden Fehlermeldung
-- fehl statt einen Platzhalter-Benutzer anzulegen, den DMS gar nicht
-- verwalten darf.
DO $$
DECLARE
    seed_user_id UUID;
    seed_folder_id UUID;
    seed_document_id UUID;
BEGIN
    SELECT id INTO seed_user_id FROM users ORDER BY created_at LIMIT 1;
    IF seed_user_id IS NULL THEN
        RAISE EXCEPTION 'dev_seed.sql: keine Zeile in users gefunden - zuerst Core-Seed (IAM-01) ausfuehren';
    END IF;

    INSERT INTO folders (name, created_by) VALUES ('Beispielordner', seed_user_id)
        RETURNING id INTO seed_folder_id;

    INSERT INTO documents (folder_id, title, created_by) VALUES (seed_folder_id, 'Beispieldokument', seed_user_id)
        RETURNING id INTO seed_document_id;

    INSERT INTO file_revisions (document_id, revision_number, storage_key, checksum_sha256, size_bytes, mime_type, created_by)
        VALUES (seed_document_id, 1, 'dev-seed/beispiel.pdf', repeat('0', 64), 12345, 'application/pdf', seed_user_id);

    UPDATE documents SET current_revision_id = (
        SELECT id FROM file_revisions WHERE document_id = seed_document_id AND revision_number = 1
    ) WHERE id = seed_document_id;

    INSERT INTO tags (name) VALUES ('Beispiel-Tag')
    ON CONFLICT (name) DO NOTHING;

    INSERT INTO document_tags (document_id, tag_id)
        SELECT seed_document_id, id FROM tags WHERE name = 'Beispiel-Tag';

    INSERT INTO metadata_fields (field_key, label, field_type) VALUES ('rechnungsnummer', 'Rechnungsnummer', 'text')
    ON CONFLICT (field_key) DO NOTHING;

    INSERT INTO document_metadata_values (document_id, field_id, value)
        SELECT seed_document_id, id, 'RE-2026-0001' FROM metadata_fields WHERE field_key = 'rechnungsnummer';
END $$;
