-- DOC-01: Sitzungszustand fuer fortsetzbaren Upload (Akzeptanzkriterium 1).
-- Ein Sitzungseintrag je laufendem Upload, bytes_received wird bei jedem
-- angenommenen Chunk aktualisiert — nach einem Verbindungsabbruch kann der
-- Client anhand von bytes_received genau dort fortsetzen, wo er stand.
CREATE TABLE upload_sessions (
    id             UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    filename       TEXT NOT NULL,
    mime_type      TEXT NOT NULL,
    total_size     BIGINT NOT NULL CHECK (total_size > 0),
    bytes_received BIGINT NOT NULL DEFAULT 0 CHECK (bytes_received >= 0),
    folder_id      UUID REFERENCES folders(id) ON DELETE SET NULL,
    created_by     UUID NOT NULL REFERENCES users(id),
    status         TEXT NOT NULL DEFAULT 'uploading'
                   CHECK (status IN ('uploading', 'completed', 'aborted')),
    document_id    UUID REFERENCES documents(id),
    created_at     TIMESTAMPTZ NOT NULL DEFAULT now(),
    updated_at     TIMESTAMPTZ NOT NULL DEFAULT now()
);
