diff --git a/server/mergin/auth/models.py b/server/mergin/auth/models.py index b54336ce..e9cfb61b 100644 --- a/server/mergin/auth/models.py +++ b/server/mergin/auth/models.py @@ -204,7 +204,7 @@ def generate_username(cls, email: str) -> Optional[str]: # additional check for reserved words username = f"{username}0" if is_reserved_word(username) else username # check if we already do not have existing usernames - suffix = db.session.execute( + query = db.session.execute( text( """ SELECT @@ -212,13 +212,14 @@ def generate_username(cls, email: str) -> Optional[str]: FROM "user" WHERE username = :username OR - username SIMILAR TO :username'\d+' + username SIMILAR TO :username_like ORDER BY replace(username, :username, '0')::int DESC LIMIT 1; """ ), - {"username": username}, - ).scalar() + {"username": username, "username_like": f"{username}\d+"}, + ) + suffix = query.scalar() return username if suffix is None else username + str(int(suffix) + 1) @classmethod