finished rewriting socket but it isn't working 😊
This commit is contained in:
@@ -347,3 +347,17 @@ func ContactSuggestion(db *sql.DB, contactUsername string) ([]string, error) {
|
||||
}
|
||||
return suggestions, nil
|
||||
}
|
||||
|
||||
func UpdateContactStatus(db *sql.DB, userID uuid.UUID, conversationID uuid.UUID, lastReadMessageID int) error {
|
||||
query := `
|
||||
UPDATE Memberships
|
||||
SET last_read_message_id = $1
|
||||
WHERE user_id = $2
|
||||
AND conversation_id = $3;
|
||||
`
|
||||
_, err := db.Exec(query, lastReadMessageID, userID, conversationID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to update contact status: %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -170,6 +170,11 @@ func RemoveUserFromGroup(db *sql.DB, userID uuid.UUID, groupID uuid.UUID) (strin
|
||||
WHERE conversation_id = $1 AND user_id = $2;
|
||||
`
|
||||
|
||||
removeAdministratorPermissionsQuery := `
|
||||
DELETE FROM GroupAdmins
|
||||
WHERE conversation_id = $1 AND user_id = $2;
|
||||
`
|
||||
|
||||
isOwner, err := IsGroupOwner(db, userID, groupID)
|
||||
if err != nil {
|
||||
return "Failed to remove user from group", fmt.Errorf("failed to check if user is group owner: %w", err)
|
||||
@@ -188,6 +193,12 @@ func RemoveUserFromGroup(db *sql.DB, userID uuid.UUID, groupID uuid.UUID) (strin
|
||||
if rowsAffected == 0 {
|
||||
return "User is not a member of the group", nil
|
||||
}
|
||||
|
||||
// If user is an admin, remove admin permissions
|
||||
_, err = db.Exec(removeAdministratorPermissionsQuery, groupID, userID)
|
||||
if err != nil {
|
||||
return "Failed to remove user from group", fmt.Errorf("failed to remove admin permissions: %w", err)
|
||||
}
|
||||
return "Successfully removed user from group", nil
|
||||
}
|
||||
|
||||
@@ -207,3 +218,34 @@ func IsGroupOwner(db *sql.DB, userID uuid.UUID, groupID uuid.UUID) (bool, error)
|
||||
}
|
||||
return isOwner, nil
|
||||
}
|
||||
|
||||
func AddAdministrator(db *sql.DB, userID uuid.UUID, groupID uuid.UUID, grantedBy uuid.UUID) (string, error) {
|
||||
query := `
|
||||
INSERT INTO GroupAdmins (conversation_id, user_id, granted_by, is_owner)
|
||||
VALUES ($1, $2, $3, false)
|
||||
RETURNING granted_at;
|
||||
`
|
||||
isOwner, err := IsGroupOwner(db, grantedBy, groupID)
|
||||
if err != nil {
|
||||
return "Failed to add administrator", err
|
||||
}
|
||||
if !isOwner {
|
||||
return "You are not the group owner", nil
|
||||
}
|
||||
|
||||
isMember, err := IsMember(db, userID, groupID)
|
||||
if err != nil {
|
||||
return "Failed to add administrator", err
|
||||
}
|
||||
if !isMember {
|
||||
return "User is not a member of the group", nil
|
||||
}
|
||||
|
||||
var grantedAt string
|
||||
err = db.QueryRow(query, groupID, userID, grantedBy).Scan(&grantedAt)
|
||||
if err != nil {
|
||||
return "Failed to add administrator", fmt.Errorf("failed to add administrator: %w", err)
|
||||
}
|
||||
return "Successfully added administrator", nil
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user