github.com/infraboard/keyauth@v0.8.1/apps/namespace/impl/query.go (about) 1 package grpc 2 3 import ( 4 "github.com/infraboard/mcube/exception" 5 "go.mongodb.org/mongo-driver/bson" 6 "go.mongodb.org/mongo-driver/mongo/options" 7 8 "github.com/infraboard/keyauth/apps/namespace" 9 ) 10 11 func newPaggingQuery(req *namespace.QueryNamespaceRequest) *queryNamespaceRequest { 12 return &queryNamespaceRequest{ 13 QueryNamespaceRequest: req, 14 } 15 } 16 17 type queryNamespaceRequest struct { 18 *namespace.QueryNamespaceRequest 19 namespaces []string 20 } 21 22 func (r *queryNamespaceRequest) AddNamespace(ns []string) { 23 // 如果是*表示无需过滤 24 for _, v := range ns { 25 if v == "*" { 26 return 27 } 28 } 29 30 r.namespaces = ns 31 } 32 33 func (r *queryNamespaceRequest) FindOptions() *options.FindOptions { 34 pageSize := int64(r.Page.PageSize) 35 skip := int64(r.Page.PageSize) * int64(r.Page.PageNumber-1) 36 37 opt := &options.FindOptions{ 38 Sort: bson.D{{Key: "create_at", Value: -1}}, 39 Limit: &pageSize, 40 Skip: &skip, 41 } 42 43 return opt 44 } 45 46 func (r *queryNamespaceRequest) FindFilter() bson.M { 47 filter := bson.M{} 48 49 if r.DepartmentId != "" { 50 if r.WithSubDepartment { 51 filter["department_id"] = bson.M{"$regex": r.DepartmentId, "$options": "im"} 52 } else { 53 filter["department_id"] = r.DepartmentId 54 } 55 } 56 57 if len(r.namespaces) > 0 { 58 filter["name"] = bson.M{"$in": r.namespaces} 59 } 60 61 if r.Name != "" { 62 filter["name"] = r.Name 63 } 64 65 return filter 66 } 67 68 func newDescribeQuery(req *namespace.DescriptNamespaceRequest) (*describeNamespaceRequest, error) { 69 if err := req.Validate(); err != nil { 70 return nil, exception.NewBadRequest(err.Error()) 71 } 72 73 return &describeNamespaceRequest{req}, nil 74 } 75 76 type describeNamespaceRequest struct { 77 *namespace.DescriptNamespaceRequest 78 } 79 80 func (r *describeNamespaceRequest) FindFilter() bson.M { 81 filter := bson.M{} 82 83 if r.Id != "" { 84 filter["_id"] = r.Id 85 } 86 87 return filter 88 } 89 90 func newDeleteRequest(req *namespace.DeleteNamespaceRequest) (*deleteNamespaceRequest, error) { 91 if err := req.Validate(); err != nil { 92 return nil, exception.NewBadRequest(err.Error()) 93 } 94 95 return &deleteNamespaceRequest{ 96 DeleteNamespaceRequest: req, 97 }, nil 98 } 99 100 type deleteNamespaceRequest struct { 101 *namespace.DeleteNamespaceRequest 102 } 103 104 func (r *deleteNamespaceRequest) FindFilter() bson.M { 105 filter := bson.M{ 106 "domain": r.Domain, 107 "_id": r.Id, 108 } 109 110 return filter 111 }