github.com/infraboard/keyauth@v0.8.1/apps/token/impl/query.go (about) 1 package impl 2 3 import ( 4 "fmt" 5 6 "go.mongodb.org/mongo-driver/bson" 7 "go.mongodb.org/mongo-driver/mongo/options" 8 9 "github.com/infraboard/keyauth/apps/token" 10 ) 11 12 func newDescribeTokenRequestWithAccess(token string) *describeTokenRequest { 13 return &describeTokenRequest{ 14 AccessToken: token, 15 } 16 } 17 18 func newDescribeTokenRequestWithRefresh(token string) *describeTokenRequest { 19 return &describeTokenRequest{ 20 RefreshToken: token, 21 } 22 } 23 24 func newDescribeTokenRequest(req *token.DescribeTokenRequest) *describeTokenRequest { 25 return &describeTokenRequest{ 26 AccessToken: req.AccessToken, 27 RefreshToken: req.RefreshToken, 28 } 29 } 30 31 type describeTokenRequest struct { 32 AccessToken string 33 RefreshToken string 34 } 35 36 func (req *describeTokenRequest) String() string { 37 return fmt.Sprintf("access_token: %s, refresh_token: %s", 38 req.AccessToken, req.RefreshToken) 39 } 40 41 func (req *describeTokenRequest) FindFilter() bson.M { 42 filter := bson.M{} 43 if req.AccessToken != "" { 44 filter["_id"] = req.AccessToken 45 } 46 if req.RefreshToken != "" { 47 filter["refresh_token"] = req.RefreshToken 48 } 49 50 return filter 51 } 52 53 func newQueryRequest(req *token.QueryTokenRequest) *queryRequest { 54 return &queryRequest{req} 55 } 56 57 type queryRequest struct { 58 *token.QueryTokenRequest 59 } 60 61 func (r *queryRequest) FindOptions() *options.FindOptions { 62 pageSize := int64(r.Page.PageSize) 63 skip := int64(r.Page.PageSize) * int64(r.Page.PageNumber-1) 64 65 opt := &options.FindOptions{ 66 Sort: bson.D{{Key: "create_at", Value: -1}}, 67 Limit: &pageSize, 68 Skip: &skip, 69 } 70 71 return opt 72 } 73 74 func (r *queryRequest) FindFilter() bson.M { 75 filter := bson.M{} 76 if r.ApplicationId != "" { 77 filter["application_id"] = r.ApplicationId 78 } 79 if r.GrantType != token.GrantType_NULL { 80 filter["grant_type"] = r.GrantType 81 } 82 if r.Account != "" { 83 filter["account"] = r.Account 84 } 85 return filter 86 } 87 88 func newDeleteTokenRequest(req *token.DeleteTokenRequest) *deleteTokenRequest { 89 return &deleteTokenRequest{ 90 DeleteTokenRequest: req, 91 } 92 } 93 94 type deleteTokenRequest struct { 95 *token.DeleteTokenRequest 96 } 97 98 func (req *deleteTokenRequest) String() string { 99 return fmt.Sprintf("access_token: %s", 100 req.AccessToken) 101 } 102 103 func (req *deleteTokenRequest) FindFilter() bson.M { 104 filter := bson.M{} 105 106 filter["domain"] = req.Domain 107 filter["account"] = req.Account 108 109 if len(req.AccessToken) > 0 { 110 filter["_id"] = bson.M{"$in": req.AccessToken} 111 } 112 113 return filter 114 }