Commit 92e3a32

Eric Bower  ·  2025-08-07 23:07:16 -0400 EDT
parent e1fca8b
refactor(feeds): only fetch users with feeds post
4 files changed,  +40, -1
+1, -1
......@@ -586,7 +586,7 @@ func (f *Fetcher) SendEmail(logger *slog.Logger, username, email, subject string
586586 }
587587
588588 func (f *Fetcher) Run(now time.Time) error {
589- users, err := f.db.FindUsers()
589+ users, err := f.db.FindUsersWithPost("feeds")
590590 if err != nil {
591591 return err
592592 }
+1, -0
......@@ -408,6 +408,7 @@ type DB interface {
408408 FindPost(postID string) (*Post, error)
409409 FindPostsForUser(pager *Pager, userID string, space string) (*Paginate[*Post], error)
410410 FindAllPostsForUser(userID string, space string) ([]*Post, error)
411+ FindUsersWithPost(space string) ([]*User, error)
411412 FindPostsBeforeDate(date *time.Time, space string) ([]*Post, error)
412413 FindExpiredPosts(space string) ([]*Post, error)
413414 FindUpdatedPostsForUser(userID string, space string) ([]*Post, error)
+34, -0
......@@ -554,6 +554,40 @@ func (me *PsqlDB) FindPostsBeforeDate(date *time.Time, space string) ([]*db.Post
554554 return posts, nil
555555 }
556556
557+func (me *PsqlDB) FindUsersWithPost(space string) ([]*db.User, error) {
558+ var users []*db.User
559+ rs, err := me.Db.Query(
560+ `SELECT u.id, u.name, u.created_at
561+ FROM app_users u
562+ INNER JOIN posts ON u.id=posts.user_id
563+ WHERE cur_space='feeds'
564+ GROUP BY u.id, u.name, u.created_at
565+ ORDER BY name ASC`,
566+ )
567+ if err != nil {
568+ return users, err
569+ }
570+ for rs.Next() {
571+ var name sql.NullString
572+ user := &db.User{}
573+ err := rs.Scan(
574+ &user.ID,
575+ &name,
576+ &user.CreatedAt,
577+ )
578+ if err != nil {
579+ return users, err
580+ }
581+ user.Name = name.String
582+
583+ users = append(users, user)
584+ }
585+ if rs.Err() != nil {
586+ return users, rs.Err()
587+ }
588+ return users, nil
589+}
590+
557591 func (me *PsqlDB) FindUserForKey(username string, key string) (*db.User, error) {
558592 me.Logger.Info("attempting to find user with only public key", "key", key)
559593 pk, err := me.FindPublicKeyForKey(key)
+4, -0
......@@ -284,3 +284,7 @@ func (me *StubDB) FindTunsEventLogs(userID string) ([]*db.TunsEventLog, error) {
284284 func (me *StubDB) VisitUrlNotFound(opts *db.SummaryOpts) ([]*db.VisitUrl, error) {
285285 return nil, errNotImpl
286286 }
287+
288+func (me *StubDB) FindUsersWithPost(space string) ([]*db.User, error) {
289+ return nil, errNotImpl
290+}