feat: Project preready
This commit is contained in:
@@ -45,10 +45,24 @@ public class AppDbContext : IdentityDbContext<AppUser, IdentityRole<Guid>, Guid>
|
||||
public DbSet<RefreshToken> RefreshTokens => Set<RefreshToken>();
|
||||
public DbSet<Notification> Notifications => Set<Notification>();
|
||||
|
||||
// Core profile / player chain
|
||||
public DbSet<Player> Players => Set<Player>();
|
||||
public DbSet<Profile> Profiles => Set<Profile>();
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder b)
|
||||
{
|
||||
base.OnModelCreating(b);
|
||||
|
||||
// Player configuration
|
||||
b.Entity<Player>()
|
||||
.HasIndex(p => p.UserId)
|
||||
.IsUnique();
|
||||
b.Entity<Player>()
|
||||
.HasOne<AppUser>()
|
||||
.WithOne()
|
||||
.HasForeignKey<Player>(p => p.UserId)
|
||||
.IsRequired();
|
||||
|
||||
// Rank configurations
|
||||
b.Entity<Rank>()
|
||||
.HasIndex(r => r.ExpNeeded)
|
||||
@@ -201,7 +215,6 @@ public class AppDbContext : IdentityDbContext<AppUser, IdentityRole<Guid>, Guid>
|
||||
b.Entity<RefreshToken>().HasIndex(x => x.Token).IsUnique();
|
||||
|
||||
// ---------- Performance indexes ----------
|
||||
b.Entity<AppUser>().HasIndex(u => u.RankId);
|
||||
b.Entity<PlayerSkill>().HasIndex(ps => ps.SkillId);
|
||||
b.Entity<EventLog>().HasIndex(e => new { e.UserId, e.Type, e.CreatedAt });
|
||||
b.Entity<StoreItem>().HasIndex(i => i.IsActive);
|
||||
|
||||
@@ -10,6 +10,8 @@ namespace LctMonolith.Database.UnitOfWork;
|
||||
public interface IUnitOfWork
|
||||
{
|
||||
IGenericRepository<AppUser> Users { get; }
|
||||
IGenericRepository<Player> Players { get; }
|
||||
IGenericRepository<MissionCategory> MissionCategories { get; } // added
|
||||
IGenericRepository<Rank> Ranks { get; }
|
||||
IGenericRepository<RankMissionRule> RankMissionRules { get; }
|
||||
IGenericRepository<RankSkillRule> RankSkillRules { get; }
|
||||
@@ -24,6 +26,12 @@ public interface IUnitOfWork
|
||||
IGenericRepository<EventLog> EventLogs { get; }
|
||||
IGenericRepository<RefreshToken> RefreshTokens { get; }
|
||||
IGenericRepository<Notification> Notifications { get; }
|
||||
IGenericRepository<MissionItemReward> MissionItemRewards { get; } // added
|
||||
IGenericRepository<MissionRankRule> MissionRankRules { get; } // added
|
||||
IGenericRepository<Dialogue> Dialogues { get; }
|
||||
IGenericRepository<DialogueMessage> DialogueMessages { get; }
|
||||
IGenericRepository<DialogueMessageResponseOption> DialogueMessageResponseOptions { get; }
|
||||
IGenericRepository<Profile> Profiles { get; }
|
||||
|
||||
Task<int> SaveChangesAsync(CancellationToken ct = default);
|
||||
Task BeginTransactionAsync(CancellationToken ct = default);
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
using LctMonolith.Database.Data;
|
||||
using LctMonolith.Database.Repositories;
|
||||
using LctMonolith.Models.Database;
|
||||
@@ -35,6 +34,14 @@ public class UnitOfWork : IUnitOfWork, IAsyncDisposable
|
||||
private IGenericRepository<EventLog>? _eventLogs;
|
||||
private IGenericRepository<RefreshToken>? _refreshTokens;
|
||||
private IGenericRepository<Notification>? _notifications;
|
||||
private IGenericRepository<Player>? _players;
|
||||
private IGenericRepository<MissionCategory>? _missionCategories;
|
||||
private IGenericRepository<MissionItemReward>? _missionItemRewards;
|
||||
private IGenericRepository<MissionRankRule>? _missionRankRules;
|
||||
private IGenericRepository<Dialogue>? _dialogues;
|
||||
private IGenericRepository<DialogueMessage>? _dialogueMessages;
|
||||
private IGenericRepository<DialogueMessageResponseOption>? _dialogueMessageResponseOptions;
|
||||
private IGenericRepository<Profile>? _profiles;
|
||||
|
||||
public IGenericRepository<AppUser> Users => _users ??= new GenericRepository<AppUser>(_ctx);
|
||||
public IGenericRepository<Rank> Ranks => _ranks ??= new GenericRepository<Rank>(_ctx);
|
||||
@@ -51,6 +58,14 @@ public class UnitOfWork : IUnitOfWork, IAsyncDisposable
|
||||
public IGenericRepository<EventLog> EventLogs => _eventLogs ??= new GenericRepository<EventLog>(_ctx);
|
||||
public IGenericRepository<RefreshToken> RefreshTokens => _refreshTokens ??= new GenericRepository<RefreshToken>(_ctx);
|
||||
public IGenericRepository<Notification> Notifications => _notifications ??= new GenericRepository<Notification>(_ctx);
|
||||
public IGenericRepository<Player> Players => _players ??= new GenericRepository<Player>(_ctx);
|
||||
public IGenericRepository<MissionCategory> MissionCategories => _missionCategories ??= new GenericRepository<MissionCategory>(_ctx);
|
||||
public IGenericRepository<MissionItemReward> MissionItemRewards => _missionItemRewards ??= new GenericRepository<MissionItemReward>(_ctx);
|
||||
public IGenericRepository<MissionRankRule> MissionRankRules => _missionRankRules ??= new GenericRepository<MissionRankRule>(_ctx);
|
||||
public IGenericRepository<Dialogue> Dialogues => _dialogues ??= new GenericRepository<Dialogue>(_ctx);
|
||||
public IGenericRepository<DialogueMessage> DialogueMessages => _dialogueMessages ??= new GenericRepository<DialogueMessage>(_ctx);
|
||||
public IGenericRepository<DialogueMessageResponseOption> DialogueMessageResponseOptions => _dialogueMessageResponseOptions ??= new GenericRepository<DialogueMessageResponseOption>(_ctx);
|
||||
public IGenericRepository<Profile> Profiles => _profiles ??= new GenericRepository<Profile>(_ctx);
|
||||
|
||||
public Task<int> SaveChangesAsync(CancellationToken ct = default) => _ctx.SaveChangesAsync(ct);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user