Fix users profile handleUnverified
47fc78a parent: f254c53 modified
internal/db/db.go +1 -1 | @@ -9,7 +9,7 @@ import ( | ||
| 9 | 9 | "github.com/mattn/go-sqlite3" |
| 10 | 10 | ) |
| 11 | 11 | |
| 12 | -const DSN = "_journal_mode=WAL&_busy_timeout=5000&_synchronous=NORMAL&_cache=shared" | |
| 12 | +const DSN = "_journal_mode=WAL&_busy_timeout=30000&_synchronous=NORMAL&_cache=shared" | |
| 13 | 13 | |
| 14 | 14 | func init() { |
| 15 | 15 | sql.Register("sqlite3_glean", &sqlite3.SQLiteDriver{ |
| @@ -9,7 +9,7 @@ import ( | |||
| 9 | "github.com/mattn/go-sqlite3" | 9 | "github.com/mattn/go-sqlite3" |
| 10 | ) | 10 | ) |
| 11 | 11 | ||
| 12 | -const DSN = "_journal_mode=WAL&_busy_timeout=5000&_synchronous=NORMAL&_cache=shared" | 12 | +const DSN = "_journal_mode=WAL&_busy_timeout=30000&_synchronous=NORMAL&_cache=shared" |
| 13 | 13 | ||
| 14 | func init() { | 14 | func init() { |
| 15 | sql.Register("sqlite3_glean", &sqlite3.SQLiteDriver{ | 15 | sql.Register("sqlite3_glean", &sqlite3.SQLiteDriver{ |
modified
internal/db/user.go +2 -2 | @@ -33,7 +33,7 @@ func (db *DB) BatchCreateUsers(ctx context.Context, users []UserData) error { | ||
| 33 | 33 | |
| 34 | 34 | stmt, err := tx.PrepareContext(ctx, ` |
| 35 | 35 | INSERT INTO users (did, handle, display_name, avatar_url, updated_at) |
| 36 | - VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP) | |
| 36 | + VALUES (?, COALESCE(NULLIF(?, ''), ?), NULLIF(?, ''), NULLIF(?, ''), CURRENT_TIMESTAMP) | |
| 37 | 37 | ON CONFLICT(did) DO UPDATE SET |
| 38 | 38 | handle = COALESCE(NULLIF(excluded.handle, ''), users.handle), |
| 39 | 39 | display_name = COALESCE(NULLIF(excluded.display_name, ''), users.display_name), |
| @@ -46,7 +46,7 @@ func (db *DB) BatchCreateUsers(ctx context.Context, users []UserData) error { | ||
| 46 | 46 | defer stmt.Close() |
| 47 | 47 | |
| 48 | 48 | for _, u := range users { |
| 49 | - if _, err := stmt.ExecContext(ctx, u.DID, u.Handle, u.DisplayName, u.AvatarURL); err != nil { | |
| 49 | + if _, err := stmt.ExecContext(ctx, u.DID, u.Handle, u.DID, u.DisplayName, u.AvatarURL); err != nil { | |
| 50 | 50 | return err |
| 51 | 51 | } |
| 52 | 52 | } |
| @@ -33,7 +33,7 @@ func (db *DB) BatchCreateUsers(ctx context.Context, users []UserData) error { | |||
| 33 | 33 | ||
| 34 | stmt, err := tx.PrepareContext(ctx, ` | 34 | stmt, err := tx.PrepareContext(ctx, ` |
| 35 | INSERT INTO users (did, handle, display_name, avatar_url, updated_at) | 35 | INSERT INTO users (did, handle, display_name, avatar_url, updated_at) |
| 36 | - VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP) | 36 | + VALUES (?, COALESCE(NULLIF(?, ''), ?), NULLIF(?, ''), NULLIF(?, ''), CURRENT_TIMESTAMP) |
| 37 | ON CONFLICT(did) DO UPDATE SET | 37 | ON CONFLICT(did) DO UPDATE SET |
| 38 | handle = COALESCE(NULLIF(excluded.handle, ''), users.handle), | 38 | handle = COALESCE(NULLIF(excluded.handle, ''), users.handle), |
| 39 | display_name = COALESCE(NULLIF(excluded.display_name, ''), users.display_name), | 39 | display_name = COALESCE(NULLIF(excluded.display_name, ''), users.display_name), |
| @@ -46,7 +46,7 @@ func (db *DB) BatchCreateUsers(ctx context.Context, users []UserData) error { | |||
| 46 | defer stmt.Close() | 46 | defer stmt.Close() |
| 47 | 47 | ||
| 48 | for _, u := range users { | 48 | for _, u := range users { |
| 49 | - if _, err := stmt.ExecContext(ctx, u.DID, u.Handle, u.DisplayName, u.AvatarURL); err != nil { | 49 | + if _, err := stmt.ExecContext(ctx, u.DID, u.Handle, u.DID, u.DisplayName, u.AvatarURL); err != nil { |
| 50 | return err | 50 | return err |
| 51 | } | 51 | } |
| 52 | } | 52 | } |
modified
internal/server/profile_handler.go +3 -3 | @@ -17,7 +17,7 @@ func (s *Server) handleProfile(w http.ResponseWriter, r *http.Request) { | ||
| 17 | 17 | if strings.HasPrefix(param, "did:") { |
| 18 | 18 | did = param |
| 19 | 19 | } else { |
| 20 | - profileUser, err := s.dbs.Articles.GetUserByHandle(ctx, param) | |
| 20 | + profileUser, err := s.dbs.Users.GetUserByHandle(ctx, param) | |
| 21 | 21 | if err == nil { |
| 22 | 22 | did = profileUser.DID |
| 23 | 23 | } else { |
| @@ -31,7 +31,7 @@ func (s *Server) handleProfile(w http.ResponseWriter, r *http.Request) { | ||
| 31 | 31 | } |
| 32 | 32 | } |
| 33 | 33 | |
| 34 | - profileUser, err := s.dbs.Articles.GetUser(ctx, did) | |
| 34 | + profileUser, err := s.dbs.Users.GetUser(ctx, did) | |
| 35 | 35 | if err != nil { |
| 36 | 36 | s.logger.Warn("failed to get user", "error", err, "did", did) |
| 37 | 37 | http.Error(w, "user not found", http.StatusNotFound) |
| @@ -41,7 +41,7 @@ func (s *Server) handleProfile(w http.ResponseWriter, r *http.Request) { | ||
| 41 | 41 | if !profileUser.AvatarURL.Valid || profileUser.AvatarURL.String == "" { |
| 42 | 42 | _, displayName, avatarURL, err := atproto.FetchProfile(ctx, did) |
| 43 | 43 | if err == nil && avatarURL != "" { |
| 44 | - if err := s.dbs.Articles.UpdateUserProfile(ctx, did, displayName, avatarURL); err != nil { | |
| 44 | + if err := s.dbs.Users.UpdateUserProfile(ctx, did, displayName, avatarURL); err != nil { | |
| 45 | 45 | s.logger.Warn("failed to update user profile", "error", err, "did", did) |
| 46 | 46 | } |
| 47 | 47 | profileUser.DisplayName = nullString(displayName) |
| @@ -17,7 +17,7 @@ func (s *Server) handleProfile(w http.ResponseWriter, r *http.Request) { | |||
| 17 | if strings.HasPrefix(param, "did:") { | 17 | if strings.HasPrefix(param, "did:") { |
| 18 | did = param | 18 | did = param |
| 19 | } else { | 19 | } else { |
| 20 | - profileUser, err := s.dbs.Articles.GetUserByHandle(ctx, param) | 20 | + profileUser, err := s.dbs.Users.GetUserByHandle(ctx, param) |
| 21 | if err == nil { | 21 | if err == nil { |
| 22 | did = profileUser.DID | 22 | did = profileUser.DID |
| 23 | } else { | 23 | } else { |
| @@ -31,7 +31,7 @@ func (s *Server) handleProfile(w http.ResponseWriter, r *http.Request) { | |||
| 31 | } | 31 | } |
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | - profileUser, err := s.dbs.Articles.GetUser(ctx, did) | 34 | + profileUser, err := s.dbs.Users.GetUser(ctx, did) |
| 35 | if err != nil { | 35 | if err != nil { |
| 36 | s.logger.Warn("failed to get user", "error", err, "did", did) | 36 | s.logger.Warn("failed to get user", "error", err, "did", did) |
| 37 | http.Error(w, "user not found", http.StatusNotFound) | 37 | http.Error(w, "user not found", http.StatusNotFound) |
| @@ -41,7 +41,7 @@ func (s *Server) handleProfile(w http.ResponseWriter, r *http.Request) { | |||
| 41 | if !profileUser.AvatarURL.Valid || profileUser.AvatarURL.String == "" { | 41 | if !profileUser.AvatarURL.Valid || profileUser.AvatarURL.String == "" { |
| 42 | _, displayName, avatarURL, err := atproto.FetchProfile(ctx, did) | 42 | _, displayName, avatarURL, err := atproto.FetchProfile(ctx, did) |
| 43 | if err == nil && avatarURL != "" { | 43 | if err == nil && avatarURL != "" { |
| 44 | - if err := s.dbs.Articles.UpdateUserProfile(ctx, did, displayName, avatarURL); err != nil { | 44 | + if err := s.dbs.Users.UpdateUserProfile(ctx, did, displayName, avatarURL); err != nil { |
| 45 | s.logger.Warn("failed to update user profile", "error", err, "did", did) | 45 | s.logger.Warn("failed to update user profile", "error", err, "did", did) |
| 46 | } | 46 | } |
| 47 | profileUser.DisplayName = nullString(displayName) | 47 | profileUser.DisplayName = nullString(displayName) |