44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
# 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()
|
|
|