37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
"""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,))
|