feat(bff): Add App Version management endpoints
Build and Deploy to Production / build-and-deploy (push) Successful in 1m47s

- Add appversion.proto with GetAll, Get, Update RPCs
- Add GetAllAppVersionsQuery and handler
- Add UpdateAppVersionCommand and handler
- Add AppVersionService gRPC service
- Add AppVersionProfile for Mapster mappings
- Update IApplicationContractContext with AppVersions client
- Bump Configuration.Protobuf to 1.0.20
This commit is contained in:
masoodafar-web
2025-12-26 06:07:24 +03:30
parent 8f34f0f650
commit 6bc45e4486
12 changed files with 340 additions and 2 deletions
@@ -0,0 +1,42 @@
using BackOffice.BFF.Application.ConfigurationCQ.Commands.UpdateAppVersion;
using BackOffice.BFF.Application.ConfigurationCQ.Queries.GetAllAppVersions;
using Google.Protobuf.WellKnownTypes;
using ProtoDto = BackOffice.BFF.Configuration.Protobuf.Protos.AppVersion;
namespace BackOffice.BFF.WebApi.Common.Mappings;
public class AppVersionProfile : IRegister
{
void IRegister.Register(TypeAdapterConfig config)
{
// Request -> Query mappings
config.NewConfig<ProtoDto.GetAllAppVersionsRequest, GetAllAppVersionsQuery>()
.Map(dest => dest.IncludeInactive, src => src.IncludeInactive);
// Request -> Command mappings
config.NewConfig<ProtoDto.UpdateAppVersionRequest, UpdateAppVersionCommand>()
.Map(dest => dest.AppName, src => src.AppName)
.Map(dest => dest.CurrentVersion, src => src.CurrentVersion)
.Map(dest => dest.MinRequiredVersion, src => src.MinRequiredVersion)
.Map(dest => dest.RequiresFullCacheClear, src => src.RequiresFullCacheClear)
.Map(dest => dest.UpdateMessage, src => src.UpdateMessage)
.Map(dest => dest.ReleaseNotes, src => src.ReleaseNotes)
.Map(dest => dest.UpdateReason, src => src.UpdateReason);
// Response mappings
config.NewConfig<GetAllAppVersionsResponseDto, ProtoDto.GetAllAppVersionsResponse>()
.Map(dest => dest.Items, src => src.Items);
config.NewConfig<AppVersionItemDto, ProtoDto.AppVersionItem>()
.Map(dest => dest.Id, src => src.Id)
.Map(dest => dest.AppName, src => src.AppName)
.Map(dest => dest.CurrentVersion, src => src.CurrentVersion)
.Map(dest => dest.MinRequiredVersion, src => src.MinRequiredVersion)
.Map(dest => dest.RequiresFullCacheClear, src => src.RequiresFullCacheClear)
.Map(dest => dest.UpdateMessage, src => src.UpdateMessage ?? string.Empty)
.Map(dest => dest.ReleaseNotes, src => src.ReleaseNotes ?? string.Empty)
.Map(dest => dest.IsActive, src => src.IsActive)
.Map(dest => dest.Created, src => Timestamp.FromDateTimeOffset(src.Created))
.Map(dest => dest.LastModified, src => Timestamp.FromDateTimeOffset(src.LastModified));
}
}