from db_logging import log_change from entity import ensure_entity_active def set_property(cursor, entity_id, property_name): """ Revoked entities are immutable: cannot add properties. Schema: property(id, property_name) """ ensure_entity_active(cursor, entity_id) cursor.execute( """ INSERT INTO property (id, property_name) VALUES (%s, %s) ON CONFLICT (id, property_name) DO NOTHING """, (entity_id, property_name), ) log_change(cursor, f"Set property '{property_name}' for entity {entity_id}") def get_properties(cursor, entity_id): cursor.execute( "SELECT property_name FROM property WHERE id = %s", (entity_id,), ) rows = cursor.fetchall() return [r["property_name"] for r in rows] def delete_property(cursor, entity_id, property_name): """ Revoked entities are immutable: cannot delete properties. """ ensure_entity_active(cursor, entity_id) cursor.execute( "DELETE FROM property WHERE id = %s AND property_name = %s", (entity_id, property_name), ) log_change(cursor, f"Deleted property '{property_name}' for entity {entity_id}")