43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
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}")
|