github.com/infraboard/keyauth@v0.8.1/apps/role/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/role" 10 ) 11 12 func newDescribeRoleRequest(req *role.DescribeRoleRequest) (*describeRoleRequest, error) { 13 if err := req.Validate(); err != nil { 14 return nil, err 15 } 16 return &describeRoleRequest{req}, nil 17 } 18 19 type describeRoleRequest struct { 20 *role.DescribeRoleRequest 21 } 22 23 func (req *describeRoleRequest) String() string { 24 return fmt.Sprintf("role: %s", req.Name) 25 } 26 27 func (req *describeRoleRequest) FindFilter() bson.M { 28 filter := bson.M{} 29 30 if req.Id != "" { 31 filter["_id"] = req.Id 32 } 33 34 if req.Name != "" { 35 filter["name"] = req.Name 36 } 37 38 return filter 39 } 40 41 // FindOptions todo 42 func (req *describeRoleRequest) FindOptions() *options.FindOneOptions { 43 opt := &options.FindOneOptions{} 44 45 return opt 46 } 47 48 func newQueryRoleRequest(req *role.QueryRoleRequest) (*queryRoleRequest, error) { 49 if err := req.Validate(); err != nil { 50 return nil, err 51 } 52 return &queryRoleRequest{ 53 QueryRoleRequest: req}, nil 54 } 55 56 type queryRoleRequest struct { 57 *role.QueryRoleRequest 58 } 59 60 func (r *queryRoleRequest) FindOptions() *options.FindOptions { 61 pageSize := int64(r.Page.PageSize) 62 skip := int64(r.Page.PageSize) * int64(r.Page.PageNumber-1) 63 64 opt := &options.FindOptions{ 65 Sort: bson.D{{Key: "create_at", Value: -1}}, 66 Limit: &pageSize, 67 Skip: &skip, 68 } 69 70 return opt 71 } 72 73 func (r *queryRoleRequest) FindFilter() bson.M { 74 filter := bson.M{} 75 76 if r.Type != role.RoleType_NULL { 77 filter["type"] = r.Type 78 } else { 79 // 获取内建和全局的角色以及域内自己创建的角色 80 filter["$or"] = bson.A{ 81 bson.M{"type": role.RoleType_BUILDIN}, 82 bson.M{"type": role.RoleType_GLOBAL}, 83 bson.M{"type": role.RoleType_CUSTOM, "domain": r.Domain}, 84 } 85 } 86 87 return filter 88 } 89 90 func newQueryPermissionRequest(req *role.QueryPermissionRequest) (*queryPermissionRequest, error) { 91 if err := req.Validate(); err != nil { 92 return nil, err 93 } 94 return &queryPermissionRequest{ 95 QueryPermissionRequest: req}, nil 96 } 97 98 type queryPermissionRequest struct { 99 *role.QueryPermissionRequest 100 } 101 102 func (r *queryPermissionRequest) FindOptions() *options.FindOptions { 103 pageSize := int64(r.Page.PageSize) 104 skip := int64(r.Page.PageSize) * int64(r.Page.PageNumber-1) 105 106 opt := &options.FindOptions{ 107 Sort: bson.D{{Key: "create_at", Value: -1}}, 108 Limit: &pageSize, 109 Skip: &skip, 110 } 111 112 return opt 113 } 114 115 func (r *queryPermissionRequest) FindFilter() bson.M { 116 filter := bson.M{} 117 118 if r.RoleId != "" { 119 filter["role_id"] = r.RoleId 120 } 121 122 return filter 123 } 124 125 func newDeletePermissionRequest(req *role.RemovePermissionFromRoleRequest) (*deletePermissionRequest, error) { 126 if err := req.Validate(); err != nil { 127 return nil, err 128 } 129 return &deletePermissionRequest{ 130 RemovePermissionFromRoleRequest: req}, nil 131 } 132 133 type deletePermissionRequest struct { 134 *role.RemovePermissionFromRoleRequest 135 } 136 137 func (r *deletePermissionRequest) FindFilter() bson.M { 138 filter := bson.M{} 139 140 filter["role_id"] = r.RoleId 141 if !r.RemoveAll { 142 filter["_id"] = bson.M{"$in": r.PermissionId} 143 } 144 145 return filter 146 } 147 148 func newDescribePermissionRequest(req *role.DescribePermissionRequest) (*describePermissionRequest, error) { 149 if err := req.Validate(); err != nil { 150 return nil, err 151 } 152 return &describePermissionRequest{req}, nil 153 } 154 155 type describePermissionRequest struct { 156 *role.DescribePermissionRequest 157 } 158 159 func (req *describePermissionRequest) String() string { 160 return fmt.Sprintf("permission: %s", req.Id) 161 } 162 163 func (req *describePermissionRequest) FindFilter() bson.M { 164 filter := bson.M{} 165 166 if req.Id != "" { 167 filter["_id"] = req.Id 168 } 169 170 return filter 171 } 172 173 // FindOptions todo 174 func (req *describePermissionRequest) FindOptions() *options.FindOneOptions { 175 opt := &options.FindOneOptions{} 176 177 return opt 178 }