Add time record API endpoint and supporting infrastructure
Introduced a new TimeController with a POST endpoint to insert and retrieve the latest time record. Added ITimeRepository, TimeRepository, and TimeRecord entity. Implemented MediatR command and handler for time insertion. Updated ApplicationDbContext and DI configuration to support the new feature.
This commit is contained in:
@@ -16,6 +16,7 @@ public partial class ApplicationDbContext : DbContext
|
||||
|
||||
public virtual DbSet<VwmyCatalog> VwmyCatalogs { get; set; }
|
||||
public virtual DbSet<SmfLayout> SmfLayouts { get; set; }
|
||||
public virtual DbSet<TimeRecord> Times { get; set; }
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
@@ -83,6 +84,16 @@ public partial class ApplicationDbContext : DbContext
|
||||
.HasColumnName("CHANGED_WHEN");
|
||||
});
|
||||
|
||||
modelBuilder.Entity<TimeRecord>(entity =>
|
||||
{
|
||||
entity.HasNoKey();
|
||||
entity.ToTable("TIME");
|
||||
|
||||
entity.Property(e => e.Now)
|
||||
.HasColumnType("datetime")
|
||||
.HasColumnName("NOW");
|
||||
});
|
||||
|
||||
OnModelCreatingPartial(modelBuilder);
|
||||
}
|
||||
|
||||
|
||||
28
DbFirst.Infrastructure/Repositories/TimeRepository.cs
Normal file
28
DbFirst.Infrastructure/Repositories/TimeRepository.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using DbFirst.Application.Repositories;
|
||||
using DbFirst.Domain.Entities;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace DbFirst.Infrastructure.Repositories;
|
||||
|
||||
public class TimeRepository : ITimeRepository
|
||||
{
|
||||
private readonly ApplicationDbContext _db;
|
||||
|
||||
public TimeRepository(ApplicationDbContext db)
|
||||
{
|
||||
_db = db;
|
||||
}
|
||||
|
||||
public async Task InsertAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
await _db.Database.ExecuteSqlRawAsync("INSERT INTO [TIME] (NOW) VALUES (GETDATE())", cancellationToken);
|
||||
}
|
||||
|
||||
public async Task<TimeRecord?> GetLastAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
return await _db.Times
|
||||
.AsNoTracking()
|
||||
.OrderByDescending(t => t.Now)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user