"""Documents CRUD.""" from .connection import query, execute, execute_returning def insert(filename, mime_type, original_bytes, status="uploaded"): """Insert document, return row dict.""" return execute_returning( """INSERT INTO documents (filename, mime_type, original_bytes, status) VALUES (%s, %s, %s, %s) RETURNING *""", (filename, mime_type, original_bytes, status), ) def get(doc_id): rows = query("SELECT * FROM documents WHERE id = %s", (doc_id,)) return rows[0] if rows else None def set_parsed(doc_id, elements_json): """Update elements_json + status='parsed'.""" import json return execute( "UPDATE documents SET elements_json = %s::jsonb, status = 'parsed' WHERE id = %s", (json.dumps(elements_json, ensure_ascii=False), doc_id), ) def set_error(doc_id, error_message): return execute( "UPDATE documents SET status = 'error', error_message = %s WHERE id = %s", (error_message, doc_id), ) def delete(doc_id): return execute("DELETE FROM documents WHERE id = %s", (doc_id,))