# ca_core/group_member.py def add_group_member(cursor, group_id: int, member_id: int, role: str): # Verify group exists and is active cursor.execute("SELECT type, status FROM entity WHERE id=%s", (group_id,)) row = cursor.fetchone() if not row or row["status"] != "active" or row["type"] != "group": raise ValueError("Invalid or inactive group") # Verify member exists and is active cursor.execute("SELECT status FROM entity WHERE id=%s", (member_id,)) row = cursor.fetchone() if not row or row["status"] != "active": raise ValueError("Invalid or inactive member") cursor.execute( "INSERT INTO group_member (group_id, member_id, role) VALUES (%s, %s, %s)", (group_id, member_id, role) ) def remove_group_member(cursor, group_id: int, member_id: int): cursor.execute( "DELETE FROM group_member WHERE group_id=%s AND member_id=%s", (group_id, member_id) ) def get_groups_for_member(cursor, member_id: int): cursor.execute( "SELECT group_id, role FROM group_member WHERE member_id=%s", (member_id,) ) return cursor.fetchall() def get_members_of_group(cursor, group_id: int): cursor.execute( "SELECT member_id, role FROM group_member WHERE group_id=%s", (group_id,) ) return cursor.fetchall()