Antonio Mika
·
2026-10-11
1package pastes
2
3import (
4 "fmt"
5
6 "github.com/picosh/pico/pkg/db"
7 "github.com/picosh/pico/pkg/db/postgres"
8)
9
10// DB is the storage pastes uses.
11type DB interface {
12 db.AuthDB
13 db.PostDB
14 FindExpiredPosts(space string) ([]*db.Post, error)
15}
16
17// PsqlDB is pastes's postgres storage: the queries apps share, and the ones
18// only pastes makes.
19type PsqlDB struct {
20 *postgres.PsqlDB
21}
22
23var _ DB = (*PsqlDB)(nil)
24
25func NewDB(base *postgres.PsqlDB) *PsqlDB {
26 return &PsqlDB{PsqlDB: base}
27}
28
29func (me *PsqlDB) FindExpiredPosts(space string) ([]*db.Post, error) {
30 var posts []*db.Post
31 query := fmt.Sprintf(`
32 SELECT %s
33 FROM posts
34 LEFT JOIN app_users ON app_users.id = posts.user_id
35 WHERE
36 cur_space = $1 AND
37 expires_at <= now();
38 `, postgres.SelectPost)
39 err := me.Db.Select(&posts, query, space)
40 if err != nil {
41 return nil, err
42 }
43 return posts, nil
44}