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  }