Loading server/api_account.go +1 −1 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ func (s *ApiServer) UpdateAccount(ctx context.Context, in *api.UpdateAccountRequ } userID := ctx.Value(ctxUserIDKey{}).(uuid.UUID) err := UpdateAccount(s.db, s.logger, userID, username, in.GetDisplayName(), in.GetTimezone(), in.GetLocation(), in.GetLangTag(), in.GetAvatarUrl()) err := UpdateAccount(s.db, s.logger, userID, username, in.GetDisplayName(), in.GetTimezone(), in.GetLocation(), in.GetLangTag(), in.GetAvatarUrl(), nil) if err != nil { if _, ok := err.(*pq.Error); ok { Loading server/api_friend.go +2 −1 Original line number Diff line number Diff line Loading @@ -108,7 +108,8 @@ func (s *ApiServer) DeleteFriends(ctx context.Context, in *api.DeleteFriendsRequ } if len(userIDs)+len(in.GetIds()) == 0 { return nil, status.Error(codes.InvalidArgument, "No valid ID or username was provided.") s.logger.Info("No valid ID or username was provided.") return &empty.Empty{}, nil } allIDs := make([]string, 0, len(in.GetIds())+len(userIDs)) Loading server/core_account.go +7 −1 Original line number Diff line number Diff line Loading @@ -127,7 +127,7 @@ WHERE id = $1` } func UpdateAccount(db *sql.DB, logger *zap.Logger, userID uuid.UUID, username string, displayName, timezone, location, langTag, avatarURL *wrappers.StringValue) error { displayName, timezone, location, langTag, avatarURL, metadata *wrappers.StringValue) error { index := 1 statements := make([]string, 0) Loading Loading @@ -192,6 +192,12 @@ func UpdateAccount(db *sql.DB, logger *zap.Logger, userID uuid.UUID, username st } } if metadata != nil { statements = append(statements, "metadata = $"+strconv.Itoa(index)) params = append(params, metadata.GetValue()) index++ } if len(statements) == 0 { return errors.New("No fields to update.") } Loading server/core_user.go +4 −0 Original line number Diff line number Diff line Loading @@ -187,8 +187,12 @@ func fetchUserID(db *sql.DB, usernames []string) ([]string, error) { query := "SELECT id FROM users WHERE username IN (" + strings.Join(statements, ", ") + ")" rows, err := db.Query(query, params...) if err != nil { if err == sql.ErrNoRows { return ids, nil } return nil, err } defer rows.Close() for rows.Next() { var id string Loading server/runtime_nakama_module.go +60 −0 Original line number Diff line number Diff line Loading @@ -143,6 +143,7 @@ func (n *NakamaModule) Loader(l *lua.LState) int { "logger_warn": n.loggerWarn, "logger_error": n.loggerError, "account_get_id": n.accountGetId, "account_update_id": n.accountUpdateId, "users_get_id": n.usersGetId, "users_get_username": n.usersGetUsername, "stream_user_list": n.streamUserList, Loading Loading @@ -3674,3 +3675,62 @@ func (n *NakamaModule) userGroupsList(l *lua.LState) int { l.Push(userGroups) return 1 } func (n *NakamaModule) accountUpdateId(l *lua.LState) int { userID, err := uuid.FromString(l.CheckString(1)) if err != nil { l.ArgError(1, "expects user ID to be a valid identifier") return 0 } metadataTable := l.OptTable(2, nil) var metadata *wrappers.StringValue if metadataTable != nil { metadataMap := ConvertLuaTable(metadataTable) metadataBytes, err := json.Marshal(metadataMap) if err != nil { l.RaiseError("error encoding metadata: %v", err.Error()) return 0 } metadata = &wrappers.StringValue{Value: string(metadataBytes)} } username := l.OptString(3, "") displayNameL := l.Get(4) var displayName *wrappers.StringValue if displayNameL != nil { displayName = &wrappers.StringValue{Value: l.OptString(4, "")} } timezoneL := l.Get(5) var timezone *wrappers.StringValue if timezoneL != nil { timezone = &wrappers.StringValue{Value: l.OptString(5, "")} } locationL := l.Get(6) var location *wrappers.StringValue if locationL != nil { location = &wrappers.StringValue{Value: l.OptString(6, "")} } langL := l.Get(7) var lang *wrappers.StringValue if langL != nil { lang = &wrappers.StringValue{Value: l.OptString(7, "")} } avatarL := l.Get(8) var avatar *wrappers.StringValue if avatarL != nil { avatar = &wrappers.StringValue{Value: l.OptString(8, "")} } if err = UpdateAccount(n.db, n.logger, userID, username, displayName, timezone, location, lang, avatar, metadata); err != nil { l.RaiseError("error while trying to update user: %v", err.Error()) return 0 } return 0 } Loading
server/api_account.go +1 −1 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ func (s *ApiServer) UpdateAccount(ctx context.Context, in *api.UpdateAccountRequ } userID := ctx.Value(ctxUserIDKey{}).(uuid.UUID) err := UpdateAccount(s.db, s.logger, userID, username, in.GetDisplayName(), in.GetTimezone(), in.GetLocation(), in.GetLangTag(), in.GetAvatarUrl()) err := UpdateAccount(s.db, s.logger, userID, username, in.GetDisplayName(), in.GetTimezone(), in.GetLocation(), in.GetLangTag(), in.GetAvatarUrl(), nil) if err != nil { if _, ok := err.(*pq.Error); ok { Loading
server/api_friend.go +2 −1 Original line number Diff line number Diff line Loading @@ -108,7 +108,8 @@ func (s *ApiServer) DeleteFriends(ctx context.Context, in *api.DeleteFriendsRequ } if len(userIDs)+len(in.GetIds()) == 0 { return nil, status.Error(codes.InvalidArgument, "No valid ID or username was provided.") s.logger.Info("No valid ID or username was provided.") return &empty.Empty{}, nil } allIDs := make([]string, 0, len(in.GetIds())+len(userIDs)) Loading
server/core_account.go +7 −1 Original line number Diff line number Diff line Loading @@ -127,7 +127,7 @@ WHERE id = $1` } func UpdateAccount(db *sql.DB, logger *zap.Logger, userID uuid.UUID, username string, displayName, timezone, location, langTag, avatarURL *wrappers.StringValue) error { displayName, timezone, location, langTag, avatarURL, metadata *wrappers.StringValue) error { index := 1 statements := make([]string, 0) Loading Loading @@ -192,6 +192,12 @@ func UpdateAccount(db *sql.DB, logger *zap.Logger, userID uuid.UUID, username st } } if metadata != nil { statements = append(statements, "metadata = $"+strconv.Itoa(index)) params = append(params, metadata.GetValue()) index++ } if len(statements) == 0 { return errors.New("No fields to update.") } Loading
server/core_user.go +4 −0 Original line number Diff line number Diff line Loading @@ -187,8 +187,12 @@ func fetchUserID(db *sql.DB, usernames []string) ([]string, error) { query := "SELECT id FROM users WHERE username IN (" + strings.Join(statements, ", ") + ")" rows, err := db.Query(query, params...) if err != nil { if err == sql.ErrNoRows { return ids, nil } return nil, err } defer rows.Close() for rows.Next() { var id string Loading
server/runtime_nakama_module.go +60 −0 Original line number Diff line number Diff line Loading @@ -143,6 +143,7 @@ func (n *NakamaModule) Loader(l *lua.LState) int { "logger_warn": n.loggerWarn, "logger_error": n.loggerError, "account_get_id": n.accountGetId, "account_update_id": n.accountUpdateId, "users_get_id": n.usersGetId, "users_get_username": n.usersGetUsername, "stream_user_list": n.streamUserList, Loading Loading @@ -3674,3 +3675,62 @@ func (n *NakamaModule) userGroupsList(l *lua.LState) int { l.Push(userGroups) return 1 } func (n *NakamaModule) accountUpdateId(l *lua.LState) int { userID, err := uuid.FromString(l.CheckString(1)) if err != nil { l.ArgError(1, "expects user ID to be a valid identifier") return 0 } metadataTable := l.OptTable(2, nil) var metadata *wrappers.StringValue if metadataTable != nil { metadataMap := ConvertLuaTable(metadataTable) metadataBytes, err := json.Marshal(metadataMap) if err != nil { l.RaiseError("error encoding metadata: %v", err.Error()) return 0 } metadata = &wrappers.StringValue{Value: string(metadataBytes)} } username := l.OptString(3, "") displayNameL := l.Get(4) var displayName *wrappers.StringValue if displayNameL != nil { displayName = &wrappers.StringValue{Value: l.OptString(4, "")} } timezoneL := l.Get(5) var timezone *wrappers.StringValue if timezoneL != nil { timezone = &wrappers.StringValue{Value: l.OptString(5, "")} } locationL := l.Get(6) var location *wrappers.StringValue if locationL != nil { location = &wrappers.StringValue{Value: l.OptString(6, "")} } langL := l.Get(7) var lang *wrappers.StringValue if langL != nil { lang = &wrappers.StringValue{Value: l.OptString(7, "")} } avatarL := l.Get(8) var avatar *wrappers.StringValue if avatarL != nil { avatar = &wrappers.StringValue{Value: l.OptString(8, "")} } if err = UpdateAccount(n.db, n.logger, userID, username, displayName, timezone, location, lang, avatar, metadata); err != nil { l.RaiseError("error while trying to update user: %v", err.Error()) return 0 } return 0 }