"""Supplements CRUD.""" from .connection import query, execute, execute_returning def insert(contract_id, document_id, supp_type="additional"): return execute_returning( """INSERT INTO supplements (contract_id, document_id, type) VALUES (%s, %s, %s) RETURNING *""", (contract_id, document_id, supp_type), ) def list_by_contract(contract_id): """Supplements with parsed documents, ordered by created_at.""" return query( """SELECT s.id, s.type, s.document_id, d.filename FROM supplements s JOIN documents d ON s.document_id = d.id WHERE s.contract_id = %s AND d.elements_json IS NOT NULL ORDER BY s.created_at""", (contract_id,), ) def get(supp_id): rows = query("SELECT * FROM supplements WHERE id = %s", (supp_id,)) return rows[0] if rows else None def delete_by_document(contract_id, filename): """Delete supplement+document by contract+filename.""" row = query( """SELECT s.id as sid, s.document_id FROM supplements s JOIN documents d ON d.id = s.document_id WHERE s.contract_id = %s AND d.filename = %s""", (contract_id, filename), ) if row: r = row[0] execute("DELETE FROM supplements WHERE id = %s", (r["sid"],)) execute("DELETE FROM documents WHERE id = %s", (r["document_id"],)) return True return False def delete(supp_id): return execute("DELETE FROM supplements WHERE id = %s", (supp_id,))