From ee16ff44db20ec3e95ea4c948cb132c2d0923e68 Mon Sep 17 00:00:00 2001 From: Jordan Dominion Date: Sun, 17 Aug 2025 20:16:47 -0400 Subject: [PATCH] Make REST UserGroups by ID use Projectable --- .../UserGroupResponseTransformer.cs | 37 +++++++++++++++++++ .../Controllers/UserGroupController.cs | 5 ++- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 src/Tgstation.Server.Host/Controllers/Transformers/UserGroupResponseTransformer.cs diff --git a/src/Tgstation.Server.Host/Controllers/Transformers/UserGroupResponseTransformer.cs b/src/Tgstation.Server.Host/Controllers/Transformers/UserGroupResponseTransformer.cs new file mode 100644 index 0000000000..99ae19278b --- /dev/null +++ b/src/Tgstation.Server.Host/Controllers/Transformers/UserGroupResponseTransformer.cs @@ -0,0 +1,37 @@ +using System.Collections.Generic; + +using Tgstation.Server.Api.Models; +using Tgstation.Server.Api.Models.Response; + +namespace Tgstation.Server.Host.Controllers.Transformers +{ + /// + /// for s to s. + /// + sealed class UserGroupResponseTransformer : Models.TransformerBase + { + /// + /// Initializes a new instance of the class. + /// + public UserGroupResponseTransformer() + : base( + BuildSubProjection< + Models.PermissionSet, + IEnumerable, + PermissionSet, + List, + PermissionSetTransformer, + Models.CollectionTransformer>( + (model, permissionSet, users) => new UserGroupResponse + { + Id = model.Id, + Name = model.Name, + PermissionSet = permissionSet, + Users = users, + }, + model => model.PermissionSet, + model => model.Users)) + { + } + } +} diff --git a/src/Tgstation.Server.Host/Controllers/UserGroupController.cs b/src/Tgstation.Server.Host/Controllers/UserGroupController.cs index 0a22a428d4..eb2e870336 100644 --- a/src/Tgstation.Server.Host/Controllers/UserGroupController.cs +++ b/src/Tgstation.Server.Host/Controllers/UserGroupController.cs @@ -13,6 +13,7 @@ using Tgstation.Server.Api.Models.Request; using Tgstation.Server.Api.Models.Response; using Tgstation.Server.Host.Authority; using Tgstation.Server.Host.Controllers.Results; +using Tgstation.Server.Host.Controllers.Transformers; using Tgstation.Server.Host.Database; using Tgstation.Server.Host.Models; using Tgstation.Server.Host.Security; @@ -129,7 +130,9 @@ namespace Tgstation.Server.Host.Controllers [ProducesResponseType(typeof(UserGroupResponse), 200)] [ProducesResponseType(typeof(ErrorMessageResponse), 410)] public ValueTask GetId(long id, CancellationToken cancellationToken) - => userGroupAuthority.InvokeTransformable(this, authority => authority.GetId(id, true, cancellationToken)); + => userGroupAuthority.InvokeTransformable( + this, + authority => authority.GetId(id, cancellationToken)); /// /// Lists all s.