diff options
Diffstat (limited to 'internal/db/bundb/account.go')
-rw-r--r-- | internal/db/bundb/account.go | 32 |
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{} |