Skip to content

Commit a8cc1aa

Browse files
committed
Replace AutoMapper with Mapperly. Replace EntityFramework with Dapper.
1 parent 2c9cd5b commit a8cc1aa

38 files changed

Lines changed: 789 additions & 1638 deletions

YMouseButtonControl.Core/Mappings/ButtonMappingMapper.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,21 @@ public static partial class ButtonMappingMapper
1212
[MapDerivedType<NothingMapping, NothingMappingVm>]
1313
[MapDerivedType<SimulatedKeystroke, SimulatedKeystrokeVm>]
1414
[MapDerivedType<RightClick, RightClickVm>]
15-
private static partial BaseButtonMappingVm Map(ButtonMapping buttonMapping);
15+
public static partial BaseButtonMappingVm Map(ButtonMapping? buttonMapping);
1616

1717
[MapDerivedType<DisabledMappingVm, DisabledMapping>]
1818
[MapDerivedType<NothingMappingVm, NothingMapping>]
1919
[MapDerivedType<SimulatedKeystrokeVm, SimulatedKeystroke>]
2020
[MapDerivedType<RightClickVm, RightClick>]
21-
private static partial ButtonMapping Map(BaseButtonMappingVm buttonMapping);
21+
public static partial ButtonMapping Map(BaseButtonMappingVm buttonMapping);
2222

23-
private static BaseSimulatedKeystrokeTypeVm MapSimulatedKeystrokeType(
23+
[MapDerivedType<DisabledMappingVm, DisabledMapping>]
24+
[MapDerivedType<NothingMappingVm, NothingMapping>]
25+
[MapDerivedType<SimulatedKeystrokeVm, SimulatedKeystroke>]
26+
[MapDerivedType<RightClickVm, RightClick>]
27+
public static partial void Map(BaseButtonMappingVm src, ButtonMapping dst);
28+
29+
public static BaseSimulatedKeystrokeTypeVm MapSimulatedKeystrokeType(
2430
SimulatedKeystrokeType simulatedKeystrokeType
2531
) =>
2632
simulatedKeystrokeType switch
@@ -47,7 +53,7 @@ SimulatedKeystrokeType simulatedKeystrokeType
4753
),
4854
};
4955

50-
private static SimulatedKeystrokeType? MapSimulatedKeystrokeTypeVm(
56+
public static SimulatedKeystrokeType? MapSimulatedKeystrokeTypeVm(
5157
BaseSimulatedKeystrokeTypeVm? baseSimulatedKeystrokeVm
5258
) =>
5359
baseSimulatedKeystrokeVm switch

YMouseButtonControl.Core/Mappings/ProfileMapper.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Linq;
1+
using System.Collections.Generic;
2+
using System.Linq;
23
using Riok.Mapperly.Abstractions;
34
using YMouseButtonControl.Core.ViewModels.Models;
45
using YMouseButtonControl.DataAccess.Models;
@@ -12,7 +13,13 @@ public static partial class ProfileMapper
1213

1314
public static partial Profile Map(ProfileVm vm);
1415

15-
public static partial IQueryable<ProfileVm> Map(IQueryable<Profile> queryable);
16-
1716
public static partial void Map(ProfileVm src, Profile dst);
17+
18+
private static List<BaseButtonMappingVm> MapButtonMapping(
19+
ICollection<ButtonMapping> buttonMappings
20+
) => buttonMappings.Select(ButtonMappingMapper.Map).ToList();
21+
22+
private static ICollection<ButtonMapping> MapButtonMappingVms(
23+
List<BaseButtonMappingVm> buttonMappings
24+
) => buttonMappings.Select(ButtonMappingMapper.Map).ToList();
1825
}

YMouseButtonControl.Core/Mappings/SettingMapper.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,15 @@ public static partial class SettingMapper
1010
[MapDerivedType<SettingString, SettingStringVm>]
1111
[MapDerivedType<SettingBool, SettingBoolVm>]
1212
[MapDerivedType<SettingInt, SettingIntVm>]
13-
private static partial BaseSettingVm Map(Setting setting);
13+
public static partial BaseSettingVm Map(Setting? setting);
1414

1515
[MapDerivedType<SettingStringVm, SettingString>]
1616
[MapDerivedType<SettingBoolVm, SettingBool>]
1717
[MapDerivedType<SettingIntVm, SettingInt>]
18-
private static partial Setting Map(BaseSettingVm baseSettingVm);
18+
public static partial Setting Map(BaseSettingVm baseSettingVm);
19+
20+
[MapDerivedType<SettingStringVm, SettingString>]
21+
[MapDerivedType<SettingBoolVm, SettingBool>]
22+
[MapDerivedType<SettingIntVm, SettingInt>]
23+
public static partial void Map(BaseSettingVm src, Setting dst);
1924
}
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
using System.Collections.Generic;
2+
using System.Data;
3+
using System.Linq;
4+
using System.Threading.Tasks;
5+
using Dapper;
6+
using YMouseButtonControl.Core.Mappings;
7+
using YMouseButtonControl.Core.ViewModels.Models;
8+
using YMouseButtonControl.DataAccess.Context;
9+
using YMouseButtonControl.DataAccess.Models;
10+
using YMouseButtonControl.DataAccess.Queries;
11+
12+
namespace YMouseButtonControl.Core.Repositories;
13+
14+
public class ButtonMappingRepository(YMouseButtonControlDbContext ctx, ButtonMappingQueries queries)
15+
: IRepository<ButtonMapping, BaseButtonMappingVm>
16+
{
17+
private readonly YMouseButtonControlDbContext _ctx = ctx;
18+
private const string TblName = "ButtonMappings";
19+
20+
public int Add(BaseButtonMappingVm vm)
21+
{
22+
using var conn = _ctx.CreateConnection();
23+
var ent = ButtonMappingMapper.Map(vm);
24+
ent.ButtonMappingType = ent switch
25+
{
26+
DisabledMapping => ButtonMappingType.Disabled,
27+
NothingMapping => ButtonMappingType.Nothing,
28+
SimulatedKeystroke => ButtonMappingType.SimulatedKeystroke,
29+
RightClick => ButtonMappingType.RightClick,
30+
_ => throw new System.NotImplementedException(),
31+
};
32+
return conn.Execute(queries.Add(), ent);
33+
}
34+
35+
public async Task<int> AddAsync(BaseButtonMappingVm vm)
36+
{
37+
using var conn = _ctx.CreateConnection();
38+
return await conn.ExecuteAsync(queries.Add(), vm);
39+
}
40+
41+
public BaseButtonMappingVm? GetById(int id)
42+
{
43+
using var conn = _ctx.CreateConnection();
44+
return ButtonMappingMapper.Map(
45+
conn.QueryFirstOrDefault<ButtonMapping>(queries.GetById(TblName), id)
46+
);
47+
}
48+
49+
public async Task<BaseButtonMappingVm?> GetByIdAsync(int id)
50+
{
51+
using var conn = _ctx.CreateConnection();
52+
return ButtonMappingMapper.Map(
53+
await conn.QueryFirstOrDefaultAsync<ButtonMapping>(queries.GetById(TblName), id)
54+
);
55+
}
56+
57+
public IEnumerable<BaseButtonMappingVm> GetAll()
58+
{
59+
using var conn = _ctx.CreateConnection();
60+
return conn.Query<ButtonMapping>(queries.GetAll(TblName)).Select(ButtonMappingMapper.Map);
61+
}
62+
63+
public async Task<IEnumerable<BaseButtonMappingVm>> GetAllAsync()
64+
{
65+
using var conn = _ctx.CreateConnection();
66+
return (await conn.QueryAsync<ButtonMapping>(queries.GetAll(TblName))).Select(
67+
ButtonMappingMapper.Map
68+
);
69+
}
70+
71+
public int Update(BaseButtonMappingVm vm)
72+
{
73+
using var conn = _ctx.CreateConnection();
74+
return conn.Execute(queries.Update(), vm);
75+
}
76+
77+
public async Task<int> UpdateAsync(BaseButtonMappingVm vm)
78+
{
79+
using var conn = _ctx.CreateConnection();
80+
return await conn.ExecuteAsync(queries.Update(), vm);
81+
}
82+
83+
public int Delete(BaseButtonMappingVm vm)
84+
{
85+
using var conn = _ctx.CreateConnection();
86+
return conn.Execute(queries.DeleteById(TblName), vm.Id);
87+
}
88+
89+
public Task<int> DeleteAsync(BaseButtonMappingVm vm)
90+
{
91+
using var conn = _ctx.CreateConnection();
92+
return conn.ExecuteAsync(queries.DeleteById(TblName), vm.Id);
93+
}
94+
95+
public BaseButtonMappingVm? GetByName(string name)
96+
{
97+
throw new System.NotImplementedException();
98+
}
99+
}

YMouseButtonControl.Core/Repositories/GenericRepository.cs

Lines changed: 0 additions & 135 deletions
This file was deleted.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System.Collections.Generic;
2+
using System.Threading.Tasks;
3+
4+
namespace YMouseButtonControl.Core.Repositories;
5+
6+
public interface IRepository<TEntity, TVm>
7+
{
8+
int Add(TVm vm);
9+
Task<int> AddAsync(TVm vm);
10+
TVm? GetByName(string name);
11+
TVm? GetById(int id);
12+
Task<TVm?> GetByIdAsync(int id);
13+
IEnumerable<TVm> GetAll();
14+
Task<IEnumerable<TVm>> GetAllAsync();
15+
int Update(TVm vm);
16+
Task<int> UpdateAsync(TVm vm);
17+
int Delete(TVm vm);
18+
Task<int> DeleteAsync(TVm vm);
19+
}

0 commit comments

Comments
 (0)