finished rewriting socket but it isn't working 😊

This commit is contained in:
slawk0
2025-02-11 23:03:31 +01:00
parent 248966d63f
commit e6817cb4c6
6 changed files with 214 additions and 61 deletions

View File

@@ -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
}

View File

@@ -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
}