diff options
Diffstat (limited to 'models/token.go')
-rw-r--r-- | models/token.go | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/models/token.go b/models/token.go index a18f15f325..1245098df0 100644 --- a/models/token.go +++ b/models/token.go @@ -82,16 +82,27 @@ func AccessTokenByNameExists(token *AccessToken) (bool, error) { return x.Table("access_token").Where("name = ?", token.Name).And("uid = ?", token.UID).Exist() } +// ListAccessTokensOptions contain filter options +type ListAccessTokensOptions struct { + ListOptions + Name string + UserID int64 +} + // ListAccessTokens returns a list of access tokens belongs to given user. -func ListAccessTokens(uid int64, listOptions ListOptions) ([]*AccessToken, error) { - sess := x. - Where("uid=?", uid). - Desc("id") +func ListAccessTokens(opts ListAccessTokensOptions) ([]*AccessToken, error) { + sess := x.Where("uid=?", opts.UserID) + + if len(opts.Name) != 0 { + sess = sess.Where("name=?", opts.Name) + } + + sess = sess.Desc("id") - if listOptions.Page != 0 { - sess = listOptions.setSessionPagination(sess) + if opts.Page != 0 { + sess = opts.setSessionPagination(sess) - tokens := make([]*AccessToken, 0, listOptions.PageSize) + tokens := make([]*AccessToken, 0, opts.PageSize) return tokens, sess.Find(&tokens) } |