tiny 88x31 lexicon for atproto
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

remove like count

+65 -62
+55 -50
db/lexicon.go
··· 8 8 "time" 9 9 ) 10 10 11 - // func (s *Store) GetButtonsAuth(limit int, cursor *string, ctx context.Context, did string) ([]types.ButtonViewAuth, time.Time, error) { 12 - // query := ` 13 - // SELECT 14 - // uri, 15 - // cid, 16 - // did, 17 - // alt, 18 - // href, 19 - // posted_at, 20 - // like_count 21 - // FROM buttons 22 - // ORDER BY posted_at DESC 23 - // %s 24 - // LIMIT $1 25 - // ` 26 - // var rows pgx.Rows 27 - // var err error 28 - // if cursor != nil { 29 - // query = fmt.Sprintf(query, "WHERE posted_at < $3") 30 - // rows, err = s.pool.Query(ctx, query, limit, did, cursor) 31 - // } else { 32 - // query = fmt.Sprintf(query, "") 33 - // rows, err = s.pool.Query(ctx, query, limit, did) 34 - // } 35 - // if err != nil { 36 - // if err == pgx.ErrNoRows { 37 - // return nil, time.Time{}, nil 38 - // } 39 - // return nil, time.Time{}, err 40 - // } 41 - // defer rows.Close() 42 - // var buttons = make([]types.ButtonViewAuth, 0) 43 - // var postedAt time.Time 44 - // for rows.Next() { 45 - // var btnView types.ButtonViewAuth 46 - // err := rows.Scan(&btnView.URI, &btnView.DID, &btnView.Alt, &btnView.HREF, &postedAt, &btnView.Likes, &btnView.Liked) 47 - // if err != nil { 48 - // return nil, time.Time{}, err 49 - // } 50 - // buttons = append(buttons, btnView) 51 - // } 52 - // return buttons, postedAt, nil 53 - // } 11 + func (s *Store) GetButtonsAuth(limit int, cursor *string, ctx context.Context, did string) ([]types.ButtonViewAuth, time.Time, error) { 12 + query := ` 13 + SELECT 14 + b.uri, 15 + b.cid, 16 + b.did, 17 + b.alt, 18 + b.href, 19 + b.posted_at 20 + CASE 21 + WHEN EXISTS ( 22 + SELECT l.uri 23 + FROM likes l 24 + WHERE did = $1 AND l.subject_uri = b.uri AND l.subject_cid = b.cid 25 + ) THEN TRUE 26 + ELSE FALSE 27 + END AS is_liked 28 + FROM buttons b 29 + ORDER BY posted_at DESC 30 + %s 31 + LIMIT $1 32 + ` 33 + var rows pgx.Rows 34 + var err error 35 + if cursor != nil { 36 + query = fmt.Sprintf(query, "WHERE posted_at < $3") 37 + rows, err = s.pool.Query(ctx, query, limit, did, cursor) 38 + } else { 39 + query = fmt.Sprintf(query, "") 40 + rows, err = s.pool.Query(ctx, query, limit, did) 41 + } 42 + if err != nil { 43 + if err == pgx.ErrNoRows { 44 + return nil, time.Time{}, nil 45 + } 46 + return nil, time.Time{}, err 47 + } 48 + defer rows.Close() 49 + var buttons = make([]types.ButtonViewAuth, 0) 50 + var postedAt time.Time 51 + for rows.Next() { 52 + var btnView types.ButtonViewAuth 53 + err := rows.Scan(&btnView.URI, &btnView.DID, &btnView.Alt, &btnView.HREF, &postedAt, &btnView.Liked) 54 + if err != nil { 55 + return nil, time.Time{}, err 56 + } 57 + buttons = append(buttons, btnView) 58 + } 59 + return buttons, postedAt, nil 60 + } 61 + 54 62 func (s *Store) GetButtons(limit int, cursor *string, ctx context.Context) ([]types.ButtonView, time.Time, error) { 55 63 query := ` 56 64 SELECT ··· 59 67 did, 60 68 alt, 61 69 href, 62 - posted_at, 63 - like_count 70 + posted_at 64 71 FROM buttons 65 72 ORDER BY posted_at DESC 66 73 %s ··· 89 96 var postedAt time.Time 90 97 for rows.Next() { 91 98 var btnView types.ButtonView 92 - err := rows.Scan(&btnView.URI, &btnView.CID, &btnView.DID, &btnView.Alt, &btnView.HREF, &postedAt, &btnView.Likes) 99 + err := rows.Scan(&btnView.URI, &btnView.CID, &btnView.DID, &btnView.Alt, &btnView.HREF, &postedAt) 93 100 if err != nil { 94 101 return nil, time.Time{}, err 95 102 } ··· 104 111 b.did, 105 112 b.alt, 106 113 b.href, 107 - b.cid, 108 - b.like_count, 109 - CASE 114 + b.cid 115 + CASE 110 116 WHEN EXISTS ( 111 117 SELECT 1 112 118 FROM likes l ··· 122 128 &btn.Alt, 123 129 &btn.HREF, 124 130 &btn.CID, 125 - &btn.Likes, 126 131 &btn.Liked) 127 132 if err != nil { 128 133 return nil, err
+1 -2
migrations/002_buttons.up.sql
··· 7 7 href TEXT, 8 8 cid TEXT NOT NULL, 9 9 posted_at TIMESTAMPTZ NOT NULL DEFAULT now(), 10 - indexed_at TIMESTAMPTZ NOT NULL DEFAULT now(), 11 - like_count INTEGER NOT NULL DEFAULT 0 10 + indexed_at TIMESTAMPTZ NOT NULL DEFAULT now() 12 11 ); 13 12 14 13 CREATE INDEX ON buttons (posted_at);
+4 -2
tmpl/home.html
··· 1 1 {{define "content"}} 2 2 {{range .Buttons}} 3 - <div> 3 + <div style="display: inline-block"> 4 4 {{template "buttonpart" .}} 5 - <a href="/button?uri={{.URI}}">view</a> 5 + <div> 6 + <a href="/button?uri={{.URI}}">view</a> 7 + </div> 6 8 </div> 7 9 {{else}} 8 10 no buttons yet, <a href="/upload">post the first!</a>
+5 -8
types/lexicon.go
··· 14 14 CID string 15 15 PostedAt time.Time 16 16 IndexedAt time.Time 17 - Likes int 18 17 } 19 18 20 19 type ButtonView struct { 21 - URI string `json:"uri"` 22 - CID string `json:"cid"` 23 - DID string `json:"did"` 24 - Alt *string `json:"alt,omitempty"` 25 - HREF *string `json:"href,omitempty"` 26 - Likes int `json:"likes"` 20 + URI string `json:"uri"` 21 + CID string `json:"cid"` 22 + DID string `json:"did"` 23 + Alt *string `json:"alt,omitempty"` 24 + HREF *string `json:"href,omitempty"` 27 25 } 28 26 29 27 type ButtonViewAuth struct { ··· 32 30 DID string `json:"did"` 33 31 Alt *string `json:"alt,omitempty"` 34 32 HREF *string `json:"href,omitempty"` 35 - Likes int `json:"likes"` 36 33 Liked bool `json:"liked"` 37 34 } 38 35