Skip to content

Commit 17ae68f

Browse files
committed
Remove automapper for mapperly source generated model mapping
1 parent 498fc83 commit 17ae68f

25 files changed

+219
-233
lines changed

src/Fragment.NetSlum.Core/Fragment.NetSlum.Core.csproj

+4-4
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@
88
</PropertyGroup>
99

1010
<ItemGroup>
11-
<PackageReference Include="EFCore.NamingConventions" Version="8.0.2" />
12-
<PackageReference Include="IPNetwork2" Version="2.6.618">
11+
<PackageReference Include="EFCore.NamingConventions" Version="8.0.3" />
12+
<PackageReference Include="IPNetwork2" Version="3.0.665">
1313
<Aliases>IPNetwork2</Aliases>
1414
</PackageReference>
1515
<PackageReference Include="MediatR" Version="12.2.0" />
16-
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.1" />
16+
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.2" />
1717
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
1818
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
19-
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="8.0.0-beta.2" />
19+
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="8.0.1" />
2020
<PackageReference Include="Serilog" Version="3.1.1" />
2121
<PackageReference Include="System.Text.Encoding.CodePages" Version="8.0.0" />
2222
</ItemGroup>

src/Fragment.NetSlum.Networking/Packets/Request/Mail/MailCheckRequest.cs

-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
using Fragment.NetSlum.Networking.Packets.Response.Mail;
99
using Fragment.NetSlum.Networking.Sessions;
1010
using Fragment.NetSlum.Persistence;
11-
using Microsoft.EntityFrameworkCore;
1211

1312
namespace Fragment.NetSlum.Networking.Packets.Request.Mail;
1413

src/Fragment.NetSlum.Networking/Packets/Request/Mail/SendGuildMailRequest.cs

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System.Collections.Generic;
2-
using System.Reflection.Emit;
32
using System.Threading.Tasks;
43
using Fragment.NetSlum.Networking.Attributes;
54
using Fragment.NetSlum.Networking.Constants;

src/Fragment.NetSlum.Networking/Packets/Request/Mail/SendMailRequest.cs

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using Fragment.NetSlum.Networking.Attributes;
33
using Fragment.NetSlum.Networking.Constants;
44
using Fragment.NetSlum.Networking.Objects;
5-
using Fragment.NetSlum.Networking.Packets.Response.Character;
65
using Fragment.NetSlum.Networking.Packets.Response.Mail;
76
using Fragment.NetSlum.Networking.Sessions;
87
using Fragment.NetSlum.Persistence;

src/Fragment.NetSlum.Persistence/Entities/BannedIp.cs

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using System;
22
using System.ComponentModel.DataAnnotations;
33
using System.ComponentModel.DataAnnotations.Schema;
4-
using System.Data;
54
using Microsoft.EntityFrameworkCore;
65

76
namespace Fragment.NetSlum.Persistence.Entities;

src/Fragment.NetSlum.Persistence/Entities/CharacterIpLog.cs

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using System;
22
using System.ComponentModel.DataAnnotations;
33
using System.ComponentModel.DataAnnotations.Schema;
4-
using System.Data;
54
using Microsoft.EntityFrameworkCore;
65

76
namespace Fragment.NetSlum.Persistence.Entities;

src/Fragment.NetSlum.Server/Api/Controllers/AreaServersController.cs

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using System.Collections.Generic;
2-
using AutoMapper;
32
using Fragment.NetSlum.Networking.Sessions;
43
using Fragment.NetSlum.Server.Api.Models;
4+
using Fragment.NetSlum.Server.Mappings;
55
using Fragment.NetSlum.TcpServer;
66
using Microsoft.AspNetCore.Mvc;
77

@@ -12,12 +12,10 @@ namespace Fragment.NetSlum.Server.Api.Controllers;
1212
public class AreaServersController : ControllerBase
1313
{
1414
private readonly ITcpServer _gameServer;
15-
private readonly IMapper _mapper;
1615

17-
public AreaServersController(ITcpServer gameServer, IMapper mapper)
16+
public AreaServersController(ITcpServer gameServer)
1817
{
1918
_gameServer = gameServer;
20-
_mapper = mapper;
2119
}
2220

2321
/// <summary>
@@ -29,12 +27,17 @@ public IEnumerable<AreaServerStatus> GetOnlineAreaServers()
2927
{
3028
foreach (var client in _gameServer.Sessions)
3129
{
32-
if (client is not FragmentTcpSession session || !session.IsAreaServer)
30+
if (client is not FragmentTcpSession { IsAreaServer: true } session)
3331
{
3432
continue;
3533
}
3634

37-
yield return _mapper.Map<AreaServerStatus>(session.AreaServerInfo);
35+
if (session.AreaServerInfo == null)
36+
{
37+
continue;
38+
}
39+
40+
yield return AreaServerMapper.Map(session.AreaServerInfo);
3841
}
3942
}
4043
}

src/Fragment.NetSlum.Server/Api/Controllers/GuildsController.cs

+5-7
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
using System.Collections.Generic;
22
using System.Linq;
3-
using AutoMapper;
43
using Fragment.NetSlum.Persistence;
54
using Fragment.NetSlum.Persistence.Extensions;
65
using Fragment.NetSlum.Server.Api.Models;
6+
using Fragment.NetSlum.Server.Mappings;
77
using Microsoft.AspNetCore.Mvc;
88
using Microsoft.EntityFrameworkCore;
99

@@ -14,12 +14,10 @@ namespace Fragment.NetSlum.Server.Api.Controllers;
1414
public class GuildsController
1515
{
1616
private readonly FragmentContext _database;
17-
private readonly IMapper _mapper;
1817

19-
public GuildsController(FragmentContext database, IMapper mapper)
18+
public GuildsController(FragmentContext database)
2019
{
2120
_database = database;
22-
_mapper = mapper;
2321
}
2422

2523
/// <summary>
@@ -40,7 +38,7 @@ public PagedResult<GuildInfo> GetAllGuilds(int page = 1, int pageSize = 50)
4038

4139
var guildCount = _database.Guilds.Count();
4240

43-
return new PagedResult<GuildInfo>(page, pageSize, guildCount, _mapper.Map<List<GuildInfo>>(guilds.ToList()));
41+
return new PagedResult<GuildInfo>(page, pageSize, guildCount, guilds.Select(g => GuildMapper.Map(g)).ToList());
4442
}
4543

4644
/// <summary>
@@ -57,7 +55,7 @@ public PagedResult<GuildInfo> GetAllGuilds(int page = 1, int pageSize = 50)
5755
.Include(g => g.Members)
5856
.FirstOrDefault(g => g.Id == guildId);
5957

60-
return _mapper.Map<GuildInfo>(guild);
58+
return guild == null ? null : GuildMapper.Map(guild);
6159
}
6260

6361
/// <summary>
@@ -75,7 +73,7 @@ public IEnumerable<PlayerInfo> GetGuildMembers(int guildId)
7573

7674
foreach (var member in members)
7775
{
78-
yield return _mapper.Map<PlayerInfo>(member);
76+
yield return CharacterMapper.Map(member);
7977
}
8078
}
8179
}

src/Fragment.NetSlum.Server/Api/Controllers/LobbiesController.cs

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using System.Collections.Generic;
2-
using AutoMapper;
32
using Fragment.NetSlum.Networking.Stores;
43
using Fragment.NetSlum.Server.Api.Models;
4+
using Fragment.NetSlum.Server.Mappings;
55
using Microsoft.AspNetCore.Mvc;
66

77
namespace Fragment.NetSlum.Server.Api.Controllers;
@@ -11,12 +11,10 @@ namespace Fragment.NetSlum.Server.Api.Controllers;
1111
public class LobbiesController : ControllerBase
1212
{
1313
private readonly ChatLobbyStore _lobbyStore;
14-
private readonly IMapper _mapper;
1514

16-
public LobbiesController(ChatLobbyStore lobbyStore, IMapper mapper)
15+
public LobbiesController(ChatLobbyStore lobbyStore)
1716
{
1817
_lobbyStore = lobbyStore;
19-
_mapper = mapper;
2018
}
2119

2220
/// <summary>
@@ -28,7 +26,7 @@ public IEnumerable<Lobby> GetAllLobbies()
2826
{
2927
foreach (var lobby in _lobbyStore.ChatLobbies)
3028
{
31-
yield return _mapper.Map<Lobby>(lobby);
29+
yield return LobbyMapper.Map(lobby);
3230
}
3331
}
3432
}

src/Fragment.NetSlum.Server/Api/Controllers/PlayersController.cs

+12-9
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
using System.Collections.Generic;
22
using System.Linq;
3-
using AutoMapper;
43
using Fragment.NetSlum.Networking.Sessions;
54
using Fragment.NetSlum.Persistence;
65
using Fragment.NetSlum.Persistence.Entities;
76
using Fragment.NetSlum.Persistence.Extensions;
87
using Fragment.NetSlum.Server.Api.Models;
8+
using Fragment.NetSlum.Server.Mappings;
99
using Fragment.NetSlum.TcpServer;
1010
using Microsoft.AspNetCore.Mvc;
1111
using Microsoft.EntityFrameworkCore;
@@ -18,13 +18,11 @@ public class PlayersController : ControllerBase
1818
{
1919
private readonly ITcpServer _gameServer;
2020
private readonly FragmentContext _database;
21-
private readonly IMapper _mapper;
2221

23-
public PlayersController(ITcpServer gameServer, FragmentContext database, IMapper mapper)
22+
public PlayersController(ITcpServer gameServer, FragmentContext database)
2423
{
2524
_gameServer = gameServer;
2625
_database = database;
27-
_mapper = mapper;
2826
}
2927

3028
/// <summary>
@@ -47,9 +45,11 @@ public PagedResult<PlayerInfo> GetAllPlayers(int page = 1, int pageSize = 50, st
4745

4846
var characterCount = characters.Count();
4947

50-
var results = characters.Paginate(page, pageSize);
48+
var results = characters.Paginate(page, pageSize)
49+
.Select(r => CharacterMapper.Map(r))
50+
.ToList();
5151

52-
return new PagedResult<PlayerInfo>(page, pageSize, characterCount, _mapper.Map<List<PlayerInfo>>(results));
52+
return new PagedResult<PlayerInfo>(page, pageSize, characterCount, results);
5353
}
5454

5555
/// <summary>
@@ -84,7 +84,7 @@ public IEnumerable<Client> GetOnlinePlayers()
8484
.Include(p => p.CharacterStats)
8585
.FirstOrDefault(p => p.Id == characterId);
8686

87-
return _mapper.Map<PlayerInfo>(player);
87+
return player == null ? null : CharacterMapper.Map(player);
8888
}
8989

9090
/// <summary>
@@ -101,7 +101,10 @@ public IEnumerable<PlayerInfo> GetAccountPlayerInfos(int accountId)
101101
.Include(p => p.CharacterStats)
102102
.Where(p => p.PlayerAccountId == accountId);
103103

104-
return _mapper.Map<IEnumerable<PlayerInfo>>(players);
104+
foreach (var player in players)
105+
{
106+
yield return CharacterMapper.Map(player);
107+
}
105108
}
106109

107110
/// <summary>
@@ -120,7 +123,7 @@ public IEnumerable<PlayerStats> GetPlayerStatHistory(int characterId)
120123

121124
foreach (var stats in playerStats)
122125
{
123-
yield return _mapper.Map<PlayerStats>(stats);
126+
yield return CharacterMapper.Map(stats);
124127
}
125128
}
126129
}

src/Fragment.NetSlum.Server/Converters/ImageConverter.cs

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System;
21
using Fragment.NetSlum.Core.Extensions;
32
using Fragment.NetSlum.Core.Models;
43
using ImageMagick;

src/Fragment.NetSlum.Server/Fragment.NetSlum.Server.csproj

+6-7
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,21 @@
1111
<ItemGroup>
1212
<PackageReference Include="AspNetCore.HealthChecks.System" Version="8.0.0" />
1313
<PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="8.0.0" />
14-
<PackageReference Include="AutoMapper" Version="12.0.1" />
15-
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" />
1614
<PackageReference Include="Haukcode.HighResolutionTimer" Version="1.1.0" />
17-
<PackageReference Include="Magick.NET-Q8-AnyCPU" Version="13.5.0" />
18-
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.1">
15+
<PackageReference Include="Magick.NET-Q8-AnyCPU" Version="13.6.0" />
16+
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.2">
1917
<PrivateAssets>all</PrivateAssets>
2018
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2119
</PackageReference>
2220
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
2321
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="8.0.0" />
2422
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
25-
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="8.0.1" />
23+
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="8.0.2" />
2624
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
2725
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" />
28-
<PackageReference Include="NSwag.AspNetCore" Version="14.0.1" />
29-
<PackageReference Include="Serilog.AspNetCore" Version="8.0.0" />
26+
<PackageReference Include="NSwag.AspNetCore" Version="14.0.3" />
27+
<PackageReference Include="Riok.Mapperly" Version="3.4.0" />
28+
<PackageReference Include="Serilog.AspNetCore" Version="8.0.1" />
3029
<PackageReference Include="Serilog.Settings.Configuration" Version="8.0.0" />
3130
<PackageReference Include="Serilog.Sinks.Console" Version="5.0.1" />
3231
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />

src/Fragment.NetSlum.Server/Handlers/Character/RegisterCharacterCommandHandler.cs

+3-5
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,22 @@
22
using System.Linq;
33
using System.Threading;
44
using System.Threading.Tasks;
5-
using AutoMapper;
65
using Fragment.NetSlum.Core.CommandBus.Contracts.Commands;
76
using Fragment.NetSlum.Networking.Commands.Characters;
87
using Fragment.NetSlum.Persistence;
98
using Fragment.NetSlum.Persistence.Entities;
9+
using Fragment.NetSlum.Server.Mappings;
1010
using Microsoft.EntityFrameworkCore;
1111

1212
namespace Fragment.NetSlum.Server.Handlers.Character;
1313

1414
public class RegisterCharacterCommandHandler : CommandHandler<RegisterCharacterCommand, Persistence.Entities.Character>
1515
{
1616
private readonly FragmentContext _database;
17-
private readonly IMapper _mapper;
1817

19-
public RegisterCharacterCommandHandler(FragmentContext database, IMapper mapper)
18+
public RegisterCharacterCommandHandler(FragmentContext database)
2019
{
2120
_database = database;
22-
_mapper = mapper;
2321
}
2422

2523
public override async Task<Persistence.Entities.Character> Handle(RegisterCharacterCommand command, CancellationToken cancellationToken)
@@ -36,7 +34,7 @@ public RegisterCharacterCommandHandler(FragmentContext database, IMapper mapper)
3634

3735
PlayerAccount? playerAccount = await _database.PlayerAccounts.FirstOrDefaultAsync(p => p.SaveId == characterInfo.SaveId, cancellationToken);
3836

39-
character = _mapper.Map(characterInfo, character!);
37+
character = CharacterInfoMapper.MapOrCreate(characterInfo, character);
4038

4139
// If a player account was found when looking up the save ID, use that player account instead of persisting a new one
4240
if (playerAccount != null)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using Fragment.NetSlum.Networking.Models;
2+
using Fragment.NetSlum.Server.Api.Models;
3+
using Riok.Mapperly.Abstractions;
4+
5+
namespace Fragment.NetSlum.Server.Mappings;
6+
7+
[Mapper]
8+
public partial class AreaServerMapper
9+
{
10+
[MapProperty(nameof(AreaServerInformation.ServerName), nameof(AreaServerStatus.Name))]
11+
[MapProperty(nameof(AreaServerInformation.ActiveSince), nameof(AreaServerStatus.OnlineSince))]
12+
public static partial AreaServerStatus Map(AreaServerInformation input);
13+
}

src/Fragment.NetSlum.Server/Mappings/AreaServerProfile.cs

-19
This file was deleted.

0 commit comments

Comments
 (0)