github.com/infraboard/keyauth@v0.8.1/apps/endpoint/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/endpoint" 10 "github.com/infraboard/mcube/exception" 11 ) 12 13 func newDescribeEndpointRequest(req *endpoint.DescribeEndpointRequest) (*describeEndpointRequest, error) { 14 if err := req.Validate(); err != nil { 15 return nil, exception.NewBadRequest(err.Error()) 16 } 17 18 return &describeEndpointRequest{req}, nil 19 } 20 21 type describeEndpointRequest struct { 22 *endpoint.DescribeEndpointRequest 23 } 24 25 func (req *describeEndpointRequest) String() string { 26 return fmt.Sprintf("endpoint: %s", req.Id) 27 } 28 29 func (req *describeEndpointRequest) FindFilter() bson.M { 30 filter := bson.M{} 31 if req.Id != "" { 32 filter["_id"] = req.Id 33 } 34 35 return filter 36 } 37 38 func newQueryEndpointRequest(req *endpoint.QueryEndpointRequest) *queryEndpointRequest { 39 return &queryEndpointRequest{req} 40 } 41 42 type queryEndpointRequest struct { 43 *endpoint.QueryEndpointRequest 44 } 45 46 func (r *queryEndpointRequest) FindOptions() *options.FindOptions { 47 pageSize := int64(r.Page.PageSize) 48 skip := int64(r.Page.PageSize) * int64(r.Page.PageNumber-1) 49 50 opt := &options.FindOptions{ 51 Sort: bson.D{{Key: "create_at", Value: -1}}, 52 Limit: &pageSize, 53 Skip: &skip, 54 } 55 56 return opt 57 } 58 59 func (r *queryEndpointRequest) FindFilter() bson.M { 60 filter := bson.M{} 61 62 if len(r.ServiceIds) > 0 { 63 filter["service_id"] = bson.M{"$in": r.ServiceIds} 64 } 65 if r.Method != "" { 66 filter["entry.method"] = r.Method 67 } 68 if len(r.Resources) > 0 { 69 filter["entry.resource"] = bson.M{"$in": r.Resources} 70 } 71 if r.Path != "" { 72 filter["entry.path"] = bson.M{"$regex": r.Path, "$options": "im"} 73 } 74 if r.FunctionName != "" { 75 filter["entry.function_name"] = r.FunctionName 76 } 77 switch r.PermissionEnable { 78 case endpoint.BoolQuery_TRUE: 79 filter["entry.permission_enable"] = true 80 case endpoint.BoolQuery_FALSE: 81 filter["entry.permission_enable"] = false 82 } 83 84 return filter 85 }