From 4d02357671d28ead45515e39db6b16087b88b726 Mon Sep 17 00:00:00 2001 From: Eli Ribble Date: Tue, 6 Jan 2026 16:21:59 +0000 Subject: [PATCH] Preload org from user We need this to avoid a nil dereference when querying by org. --- auth/auth.go | 8 +++++++- main.go | 3 ++- platform/ios.go | 10 +++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/auth/auth.go b/auth/auth.go index 7a5e3def..2d6ac25e 100644 --- a/auth/auth.go +++ b/auth/auth.go @@ -15,6 +15,8 @@ import ( "github.com/aarondl/opt/omit" "github.com/aarondl/opt/omitnull" "github.com/rs/zerolog/log" + "github.com/stephenafamo/bob/dialect/psql" + "github.com/stephenafamo/bob/dialect/psql/sm" "golang.org/x/crypto/bcrypt" ) @@ -157,7 +159,11 @@ func SignupUser(ctx context.Context, username string, name string, password stri // Helper function to translate strings into solid error types for operating on func findUser(ctx context.Context, user_id int) (*models.User, error) { - user, err := models.FindUser(ctx, db.PGInstance.BobDB, int32(user_id)) + //user, err := models.FindUser(ctx, db.PGInstance.BobDB, int32(user_id)) + user, err := models.Users.Query( + models.Preload.User.Organization(), + sm.Where(models.Users.Columns.ID.EQ(psql.Arg(user_id))), + ).One(ctx, db.PGInstance.BobDB) if err != nil { if err.Error() == "No such user" || err.Error() == "sql: no rows in result set" { return nil, &NoUserError{} diff --git a/main.go b/main.go index 16832e47..52a8c4bd 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,7 @@ package main import ( "context" + "fmt" "net/http" "os" "os/signal" @@ -20,7 +21,6 @@ import ( "github.com/rs/zerolog/log" ) - var BaseURL, ClientID, ClientSecret, Environment, FieldseekerSchemaDirectory, MapboxToken string func main() { @@ -216,6 +216,7 @@ func LoggerMiddleware(logger *zerolog.Logger) func(next http.Handler) http.Handl Interface("recover_info", rec). Bytes("debug_stack", debug.Stack()). Msg("log system error") + fmt.Println("Stack:", string(debug.Stack())) http.Error(ww, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) } diff --git a/platform/ios.go b/platform/ios.go index bc760e37..9d787c87 100644 --- a/platform/ios.go +++ b/platform/ios.go @@ -11,7 +11,15 @@ import ( ) func fieldseeker(ctx context.Context, u *models.User, since *time.Time) (fsync FieldseekerRecordsSync, err error) { - pl, err := u.R.Organization.Pointlocations().All(ctx, db.PGInstance.BobDB) + if u == nil { + return fsync, fmt.Errorf("Wha! Nil user!") + } + org := u.R.Organization + if org == nil { + return fsync, fmt.Errorf("Whoa nil org from user %d and org %d.", u.ID, u.OrganizationID) + } + db_connection := db.PGInstance.BobDB + pl, err := org.Pointlocations().All(ctx, db_connection) if err != nil { return fsync, fmt.Errorf("Failed to get point locations: %w", err) }