summaryrefslogtreecommitdiff
path: root/internal/db/bundb/account.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/db/bundb/account.go')
-rw-r--r--internal/db/bundb/account.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/internal/db/bundb/account.go b/internal/db/bundb/account.go
index 9f3fc8a16..01601e540 100644
--- a/internal/db/bundb/account.go
+++ b/internal/db/bundb/account.go
@@ -442,6 +442,38 @@ func (a *accountDB) GetAccountWebStatuses(ctx context.Context, accountID string,
return a.statusesFromIDs(ctx, statusIDs)
}
+func (a *accountDB) GetBookmarks(ctx context.Context, accountID string, limit int, maxID string, minID string) ([]*gtsmodel.StatusBookmark, db.Error) {
+ bookmarks := []*gtsmodel.StatusBookmark{}
+
+ q := a.conn.
+ NewSelect().
+ TableExpr("? AS ?", bun.Ident("status_bookmarks"), bun.Ident("status_bookmark")).
+ Order("status_bookmark.id DESC").
+ Where("? = ?", bun.Ident("status_bookmark.account_id"), accountID)
+
+ if accountID == "" {
+ return nil, errors.New("must provide an account")
+ }
+
+ if limit != 0 {
+ q = q.Limit(limit)
+ }
+
+ if maxID != "" {
+ q = q.Where("? < ?", bun.Ident("status_bookmark.id"), maxID)
+ }
+
+ if minID != "" {
+ q = q.Where("? > ?", bun.Ident("status_bookmark.id"), minID)
+ }
+
+ if err := q.Scan(ctx, &bookmarks); err != nil {
+ return nil, a.conn.ProcessError(err)
+ }
+
+ return bookmarks, nil
+}
+
func (a *accountDB) GetAccountBlocks(ctx context.Context, accountID string, maxID string, sinceID string, limit int) ([]*gtsmodel.Account, string, string, db.Error) {
blocks := []*gtsmodel.Block{}