mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-03 22:32:39 +00:00
feat(\internal): sorting column on ListIAMMembersRequest (#9203)
# Which Problems Are Solved
SortingColumn functionality on system API ListIAMMembers
SortingColumn functionality on admin API ListIAMMembers
# How the Problems Are Solved
I have added enum MemberFieldColumnName in` member.proto `file ,
consists of names of the columns on which the request can be sorted.
MEMBER_FIELD_NAME_UNSPECIFIED = 0;
MEMBER_FIELD_NAME_USER_ID=1;
MEMBER_FIELD_NAME_CREATION_DATE = 2;
MEMBER_FIELD_NAME_CHANGE_DATE=3;
MEMBER_FIELD_NAME_USER_RESOURCE_OWNER=4
I have added field Sorting Column for ListIAMMembersRequest in`
system.proto` file. I have added field Sorting Column for
ListIAMMembersRequest in` admin.proto` file.
I have modified ListIAMMembersRequestToQuery function in file
`internal/api/grpc/system/instance_converter.go `to include sorting
column in the query.SearchRequest{}.
I have modified ListIAMMembersRequestToQuery function in file
`internal/api/grpc/admin/iam_member_converter.go ` to include sorting
column in the query.SearchRequest{}.
# Additional Changes
Replace this example text with a concise list of additional changes that
this PR introduces, that are not directly solving the initial problem
but are related.
For example:
- The docs explicitly describe that the property XY is mandatory
- Adds missing translations for validations.
# Additional Context
Replace this example with links to related issues, discussions, discord
threads, or other sources with more context.
Use the Closing #issue syntax for issues that are resolved with this PR.
- Closes https://github.com/zitadel/zitadel/issues/5063
- Discussion #xxx
- Follow-up for PR #xxx
-
https://discordapp.com/channels/927474939156643850/1329872809488416789/1329872809488416789
---------
Co-authored-by: Stefan Benz <46600784+stebenz@users.noreply.github.com>
This commit is contained in:
@@ -28,7 +28,6 @@ func (s *Server) ListIAMMembers(ctx context.Context, req *admin_pb.ListIAMMember
|
|||||||
}
|
}
|
||||||
return &admin_pb.ListIAMMembersResponse{
|
return &admin_pb.ListIAMMembersResponse{
|
||||||
Details: object.ToListDetails(res.Count, res.Sequence, res.LastRun),
|
Details: object.ToListDetails(res.Count, res.Sequence, res.LastRun),
|
||||||
//TODO: resource owner of user of the member instead of the membership resource owner
|
|
||||||
Result: member.MembersToPb("", res.Members),
|
Result: member.MembersToPb("", res.Members),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
"github.com/zitadel/zitadel/internal/domain"
|
"github.com/zitadel/zitadel/internal/domain"
|
||||||
"github.com/zitadel/zitadel/internal/query"
|
"github.com/zitadel/zitadel/internal/query"
|
||||||
admin_pb "github.com/zitadel/zitadel/pkg/grpc/admin"
|
admin_pb "github.com/zitadel/zitadel/pkg/grpc/admin"
|
||||||
|
member_pb "github.com/zitadel/zitadel/pkg/grpc/member"
|
||||||
)
|
)
|
||||||
|
|
||||||
func AddIAMMemberToDomain(req *admin_pb.AddIAMMemberRequest) *domain.Member {
|
func AddIAMMemberToDomain(req *admin_pb.AddIAMMemberRequest) *domain.Member {
|
||||||
@@ -34,9 +35,26 @@ func ListIAMMembersRequestToQuery(req *admin_pb.ListIAMMembersRequest) (*query.I
|
|||||||
Offset: offset,
|
Offset: offset,
|
||||||
Limit: limit,
|
Limit: limit,
|
||||||
Asc: asc,
|
Asc: asc,
|
||||||
// SortingColumn: model.IAMMemberSearchKey, //TOOD: not implemented in proto
|
SortingColumn: fieldNameToMemberColumn(req.SortingColumn),
|
||||||
},
|
},
|
||||||
Queries: queries,
|
Queries: queries,
|
||||||
},
|
},
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func fieldNameToMemberColumn(fieldName member_pb.MemberFieldColumnName) query.Column {
|
||||||
|
switch fieldName {
|
||||||
|
case member_pb.MemberFieldColumnName_MEMBER_FIELD_NAME_UNSPECIFIED:
|
||||||
|
return query.InstanceMemberInstanceID
|
||||||
|
case member_pb.MemberFieldColumnName_MEMBER_FIELD_NAME_USER_ID:
|
||||||
|
return query.InstanceMemberUserID
|
||||||
|
case member_pb.MemberFieldColumnName_MEMBER_FIELD_NAME_CREATION_DATE:
|
||||||
|
return query.InstanceMemberCreationDate
|
||||||
|
case member_pb.MemberFieldColumnName_MEMBER_FIELD_NAME_CHANGE_DATE:
|
||||||
|
return query.InstanceMemberChangeDate
|
||||||
|
case member_pb.MemberFieldColumnName_MEMBER_FIELD_NAME_USER_RESOURCE_OWNER:
|
||||||
|
return query.InstanceMemberResourceOwner
|
||||||
|
default:
|
||||||
|
return query.Column{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import (
|
|||||||
"github.com/zitadel/zitadel/internal/domain"
|
"github.com/zitadel/zitadel/internal/domain"
|
||||||
"github.com/zitadel/zitadel/internal/query"
|
"github.com/zitadel/zitadel/internal/query"
|
||||||
instance_pb "github.com/zitadel/zitadel/pkg/grpc/instance"
|
instance_pb "github.com/zitadel/zitadel/pkg/grpc/instance"
|
||||||
|
member_pb "github.com/zitadel/zitadel/pkg/grpc/member"
|
||||||
system_pb "github.com/zitadel/zitadel/pkg/grpc/system"
|
system_pb "github.com/zitadel/zitadel/pkg/grpc/system"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -274,9 +275,26 @@ func ListIAMMembersRequestToQuery(req *system_pb.ListIAMMembersRequest) (*query.
|
|||||||
Offset: offset,
|
Offset: offset,
|
||||||
Limit: limit,
|
Limit: limit,
|
||||||
Asc: asc,
|
Asc: asc,
|
||||||
// SortingColumn: model.IAMMemberSearchKey, //TOOD: not implemented in proto
|
SortingColumn: fieldNameToMemberColumn(req.SortingColumn),
|
||||||
},
|
},
|
||||||
Queries: queries,
|
Queries: queries,
|
||||||
},
|
},
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func fieldNameToMemberColumn(fieldName member_pb.MemberFieldColumnName) query.Column {
|
||||||
|
switch fieldName {
|
||||||
|
case member_pb.MemberFieldColumnName_MEMBER_FIELD_NAME_UNSPECIFIED:
|
||||||
|
return query.InstanceMemberInstanceID
|
||||||
|
case member_pb.MemberFieldColumnName_MEMBER_FIELD_NAME_USER_ID:
|
||||||
|
return query.InstanceMemberUserID
|
||||||
|
case member_pb.MemberFieldColumnName_MEMBER_FIELD_NAME_CREATION_DATE:
|
||||||
|
return query.InstanceMemberCreationDate
|
||||||
|
case member_pb.MemberFieldColumnName_MEMBER_FIELD_NAME_CHANGE_DATE:
|
||||||
|
return query.InstanceMemberChangeDate
|
||||||
|
case member_pb.MemberFieldColumnName_MEMBER_FIELD_NAME_USER_RESOURCE_OWNER:
|
||||||
|
return query.InstanceMemberResourceOwner
|
||||||
|
default:
|
||||||
|
return query.Column{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -8782,6 +8782,7 @@ message ListIAMMembersRequest {
|
|||||||
zitadel.v1.ListQuery query = 1;
|
zitadel.v1.ListQuery query = 1;
|
||||||
//criteria the client is looking for
|
//criteria the client is looking for
|
||||||
repeated zitadel.member.v1.SearchQuery queries = 2;
|
repeated zitadel.member.v1.SearchQuery queries = 2;
|
||||||
|
zitadel.member.v1.MemberFieldColumnName sorting_column = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ListIAMMembersResponse {
|
message ListIAMMembersResponse {
|
||||||
|
|||||||
@@ -143,3 +143,11 @@ message UserIDQuery {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum MemberFieldColumnName {
|
||||||
|
MEMBER_FIELD_NAME_UNSPECIFIED = 0;
|
||||||
|
MEMBER_FIELD_NAME_USER_ID=1;
|
||||||
|
MEMBER_FIELD_NAME_CREATION_DATE = 2;
|
||||||
|
MEMBER_FIELD_NAME_CHANGE_DATE=3;
|
||||||
|
MEMBER_FIELD_NAME_USER_RESOURCE_OWNER=4;
|
||||||
|
}
|
||||||
@@ -689,6 +689,7 @@ message ListIAMMembersRequest {
|
|||||||
zitadel.v1.ListQuery query = 1;
|
zitadel.v1.ListQuery query = 1;
|
||||||
string instance_id = 2;
|
string instance_id = 2;
|
||||||
repeated zitadel.member.v1.SearchQuery queries = 3;
|
repeated zitadel.member.v1.SearchQuery queries = 3;
|
||||||
|
zitadel.member.v1.MemberFieldColumnName sorting_column = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ListIAMMembersResponse {
|
message ListIAMMembersResponse {
|
||||||
|
|||||||
Reference in New Issue
Block a user