diff --git a/DD.Persistence.API/Controllers/ChangeLogController.cs b/DD.Persistence.API/Controllers/ChangeLogController.cs
index cf881e4..8869cdf 100644
--- a/DD.Persistence.API/Controllers/ChangeLogController.cs
+++ b/DD.Persistence.API/Controllers/ChangeLogController.cs
@@ -14,15 +14,19 @@ namespace DD.Persistence.API.Controllers;
[Route("api/[controller]")]
public class ChangeLogController : ControllerBase, IChangeLogApi
{
+ private readonly IChangeLogRepository repository;
+
public ChangeLogService service { get; }
///
/// ctor
///
///
- public ChangeLogController(ChangeLogService service)
+ ///
+ public ChangeLogController(ChangeLogService service, IChangeLogRepository repository)
{
this.service = service;
+ this.repository = repository;
}
[HttpPost("{idDiscriminator}")]
@@ -36,7 +40,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
//var userId = User.GetUserId();
var userId = Guid.NewGuid();
var changeLogCommit = new ChangeLogCommitDto(userId, comment, [dto]);
- var result = await service.(idDiscriminator, changeLogCommit, token);
+ var result = await service.AddRange(idDiscriminator, changeLogCommit, token);
return CreatedAtAction(nameof(Add), result);
}
@@ -52,7 +56,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
//var userId = User.GetUserId();
var userId = Guid.NewGuid();
var changeLogCommit = new ChangeLogCommitDto(userId, comment, dtos);
- var result = await repository.AddRange(idDiscriminator, changeLogCommit, token);
+ var result = await service.AddRange(idDiscriminator, changeLogCommit, token);
return CreatedAtAction(nameof(AddRange), result);
}
@@ -62,7 +66,13 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
public async Task Delete(Guid id, string comment, CancellationToken token)
{
var userId = User.GetUserId();
- var result = await repository.MarkAsDeleted(userId, [id], comment, token);
+ var changeLogCommit = new ChangeLogCommitDto()
+ {
+ Comment = comment,
+ IdAuthor = userId,
+ Creation = DateTimeOffset.UtcNow,
+ };
+ var result = await service.MarkAsDeleted([id], changeLogCommit, token);
return Ok(result);
}
@@ -72,7 +82,13 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
public async Task DeleteRange(IEnumerable ids, string comment, CancellationToken token)
{
var userId = User.GetUserId();
- var result = await repository.MarkAsDeleted(userId, ids, comment, token);
+ var changeLogCommit = new ChangeLogCommitDto()
+ {
+ Comment = comment,
+ IdAuthor = userId,
+ Creation = DateTimeOffset.UtcNow,
+ };
+ var result = await service.MarkAsDeleted(ids, changeLogCommit, token);
return Ok(result);
}
@@ -88,7 +104,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
//var userId = User.GetUserId();
var userId = Guid.NewGuid();
var changeLogCommit = new ChangeLogCommitDto(userId, comment, dtos);
- var result = await repository.ClearAndAddRange(idDiscriminator, changeLogCommit, token);
+ var result = await service.ClearAndAddRange(idDiscriminator, changeLogCommit, token);
return Ok(result);
}
@@ -102,7 +118,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
//var userId = User.GetUserId();
var userId = Guid.NewGuid();
var changeLogCommit = new ChangeLogCommitDto(userId, comment, [dto]);
- var result = await repository.UpdateRange(changeLogCommit, token);
+ var result = await service.UpdateRange(changeLogCommit, token);
return Ok(result);
}
@@ -117,7 +133,7 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
//var userId = User.GetUserId();
var userId = Guid.NewGuid();
var changeLogCommit = new ChangeLogCommitDto(userId, comment, dtos);
- var result = await repository.UpdateRange(changeLogCommit, token);
+ var result = await service.UpdateRange(changeLogCommit, token);
return Ok(result);
}
diff --git a/DD.Persistence.API/DependencyInjection.cs b/DD.Persistence.API/DependencyInjection.cs
index b543841..1e7d507 100644
--- a/DD.Persistence.API/DependencyInjection.cs
+++ b/DD.Persistence.API/DependencyInjection.cs
@@ -11,6 +11,7 @@ using Swashbuckle.AspNetCore.SwaggerGen;
using System.Reflection;
using System.Text.Json.Nodes;
using DD.Persistence.Database.Entity;
+using DD.Persistence.API.Services;
namespace DD.Persistence.API;
@@ -54,6 +55,7 @@ public static class DependencyInjection
{
services.AddTransient();
services.AddTransient();
+ services.AddTransient();
}
#region Authentication
diff --git a/DD.Persistence.API/Services/ChangeLogService.cs b/DD.Persistence.API/Services/ChangeLogService.cs
index 17c5944..5c796fa 100644
--- a/DD.Persistence.API/Services/ChangeLogService.cs
+++ b/DD.Persistence.API/Services/ChangeLogService.cs
@@ -1,5 +1,9 @@
-using DD.Persistence.Repositories;
+using DD.Persistence.Database.Entity;
+using DD.Persistence.Models.Requests;
+using DD.Persistence.Repositories;
+using Microsoft.AspNetCore.Components.Forms;
using Microsoft.Extensions.Caching.Memory;
+using Newtonsoft.Json.Linq;
namespace DD.Persistence.API.Services;
public class ChangeLogService
@@ -19,24 +23,56 @@ public class ChangeLogService
this.repository = repository;
}
- private async Task GetOrCreateAsync(Guid idUser, string comment, CancellationToken token)
+ private async Task GetOrCreateAsync(ChangeLogCommitDto commitDto, CancellationToken token)
{
- var key = (idUser, comment);
+ var key = (commitDto.IdAuthor, commitDto.Comment);
var commitId = await memoryCache.GetOrCreateAsync(key, async (cacheEntry) =>
{
cacheEntry.AbsoluteExpirationRelativeToNow = AbsoluteExpirationRelativeToNow;
- var commitId = await commitRepository.Add(idUser, comment, token);
+ var commitId = await commitRepository.Add(commitDto, token);
return commitId;
});
-
return commitId;
}
- public async Task AddRange( Guid idUser, string comment, CancellationToken token)
+ public async Task AddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token)
{
- var cimmitId = await GetOrCreateAsync(idUser, comment, token);
- repository.AddRange(new);
+ var commitId = await GetOrCreateAsync(commitDto, token);
+ commitDto.Id = commitId;
+
+ var result = await repository.AddRange(idDiscriminator, commitDto, token);
+ return result;
+ }
+
+ public async Task MarkAsDeleted(IEnumerable ids, ChangeLogCommitDto commitDto, CancellationToken token)
+ {
+ var commitId = await GetOrCreateAsync(commitDto, token);
+ commitDto.Id = commitId;
+
+ var result = await repository.MarkAsDeleted(commitId, ids, commitDto.Creation, token);
+
+ return result;
+ }
+
+ public async Task ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token)
+ {
+ var commitId = await GetOrCreateAsync(commitDto, token);
+ commitDto.Id = commitId;
+
+ var result = await repository.ClearAndAddRange(idDiscriminator, commitDto, token);
+
+ return result;
+ }
+
+ public async Task UpdateRange(ChangeLogCommitDto changeLogCommit, CancellationToken token)
+ {
+ var commitId = await GetOrCreateAsync(changeLogCommit, token);
+ changeLogCommit.Id = commitId;
+
+ var result = await repository.UpdateRange(changeLogCommit, token);
+
+ return result;
}
}
diff --git a/DD.Persistence.Database.Postgres.Test/DD.Persistence.Database.Postgres.Test.csproj b/DD.Persistence.Database.Postgres.Test/DD.Persistence.Database.Postgres.Test.csproj
index 859acb5..ad4619f 100644
--- a/DD.Persistence.Database.Postgres.Test/DD.Persistence.Database.Postgres.Test.csproj
+++ b/DD.Persistence.Database.Postgres.Test/DD.Persistence.Database.Postgres.Test.csproj
@@ -17,6 +17,7 @@
+
diff --git a/DD.Persistence.Database.Postgres/Migrations/20250211124554_Init.Designer.cs b/DD.Persistence.Database.Postgres/Migrations/20250214113032_Initial.Designer.cs
similarity index 98%
rename from DD.Persistence.Database.Postgres/Migrations/20250211124554_Init.Designer.cs
rename to DD.Persistence.Database.Postgres/Migrations/20250214113032_Initial.Designer.cs
index c3933d1..ee529fe 100644
--- a/DD.Persistence.Database.Postgres/Migrations/20250211124554_Init.Designer.cs
+++ b/DD.Persistence.Database.Postgres/Migrations/20250214113032_Initial.Designer.cs
@@ -13,8 +13,8 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
namespace DD.Persistence.Database.Postgres.Migrations
{
[DbContext(typeof(PersistencePostgresContext))]
- [Migration("20250211124554_Init")]
- partial class Init
+ [Migration("20250214113032_Initial")]
+ partial class Initial
{
///
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@@ -85,7 +85,7 @@ namespace DD.Persistence.Database.Postgres.Migrations
.HasColumnType("timestamp with time zone")
.HasComment("Дата создания коммита");
- b.Property("IdCommitAuthor")
+ b.Property("IdAuthor")
.HasColumnType("uuid")
.HasComment("Пользователь, создавший коммит");
diff --git a/DD.Persistence.Database.Postgres/Migrations/20250211124554_Init.cs b/DD.Persistence.Database.Postgres/Migrations/20250214113032_Initial.cs
similarity index 97%
rename from DD.Persistence.Database.Postgres/Migrations/20250211124554_Init.cs
rename to DD.Persistence.Database.Postgres/Migrations/20250214113032_Initial.cs
index d71078c..4168809 100644
--- a/DD.Persistence.Database.Postgres/Migrations/20250211124554_Init.cs
+++ b/DD.Persistence.Database.Postgres/Migrations/20250214113032_Initial.cs
@@ -7,7 +7,7 @@ using Microsoft.EntityFrameworkCore.Migrations;
namespace DD.Persistence.Database.Postgres.Migrations
{
///
- public partial class Init : Migration
+ public partial class Initial : Migration
{
///
protected override void Up(MigrationBuilder migrationBuilder)
@@ -17,7 +17,7 @@ namespace DD.Persistence.Database.Postgres.Migrations
columns: table => new
{
Id = table.Column(type: "uuid", nullable: false, comment: "Id коммита"),
- IdCommitAuthor = table.Column(type: "uuid", nullable: false, comment: "Пользователь, создавший коммит"),
+ IdAuthor = table.Column(type: "uuid", nullable: false, comment: "Пользователь, создавший коммит"),
Creation = table.Column(type: "timestamp with time zone", nullable: false, comment: "Дата создания коммита"),
Comment = table.Column(type: "text", nullable: false, comment: "Комментарий к коммиту")
},
diff --git a/DD.Persistence.Database.Postgres/Migrations/PersistencePostgresContextModelSnapshot.cs b/DD.Persistence.Database.Postgres/Migrations/PersistencePostgresContextModelSnapshot.cs
index 5a98443..236dc97 100644
--- a/DD.Persistence.Database.Postgres/Migrations/PersistencePostgresContextModelSnapshot.cs
+++ b/DD.Persistence.Database.Postgres/Migrations/PersistencePostgresContextModelSnapshot.cs
@@ -82,7 +82,7 @@ namespace DD.Persistence.Database.Postgres.Migrations
.HasColumnType("timestamp with time zone")
.HasComment("Дата создания коммита");
- b.Property("IdCommitAuthor")
+ b.Property("IdAuthor")
.HasColumnType("uuid")
.HasComment("Пользователь, создавший коммит");
diff --git a/DD.Persistence.Database/DependencyInjection.cs b/DD.Persistence.Database/DependencyInjection.cs
index a9291e2..d0c7033 100644
--- a/DD.Persistence.Database/DependencyInjection.cs
+++ b/DD.Persistence.Database/DependencyInjection.cs
@@ -43,6 +43,7 @@ public static class DependencyInjection
MapsterSetup();
services.AddTransient();
+ services.AddTransient();
services.AddTransient();
services.AddTransient();
services.AddTransient();
diff --git a/DD.Persistence.Database/Entity/ChangeLogCommit.cs b/DD.Persistence.Database/Entity/ChangeLogCommit.cs
index 1addcb5..f816524 100644
--- a/DD.Persistence.Database/Entity/ChangeLogCommit.cs
+++ b/DD.Persistence.Database/Entity/ChangeLogCommit.cs
@@ -19,7 +19,7 @@ public class ChangeLogCommit
public Guid Id { get; set; }
[Comment("Пользователь, создавший коммит")]
- public Guid IdCommitAuthor { get; set; }
+ public Guid IdAuthor { get; set; }
[Comment("Дата создания коммита")]
public DateTimeOffset Creation { get; set; }
diff --git a/DD.Persistence.Database/Repositories/ChangeLogCommitRepository.cs b/DD.Persistence.Database/Repositories/ChangeLogCommitRepository.cs
index aa300a6..ea60f7b 100644
--- a/DD.Persistence.Database/Repositories/ChangeLogCommitRepository.cs
+++ b/DD.Persistence.Database/Repositories/ChangeLogCommitRepository.cs
@@ -1,4 +1,5 @@
using DD.Persistence.Database.Entity;
+using DD.Persistence.Models.Requests;
using DD.Persistence.Repositories;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Caching.Memory;
@@ -23,22 +24,20 @@ public class ChangeLogCommitRepository : IChangeLogCommitRepository
this.db = db;
}
- private virtual async Task Add(Guid idUser, string comment, CancellationToken token) {
+ public async Task Add(ChangeLogCommitDto commitDto, CancellationToken token)
+ {
var commit = new ChangeLogCommit()
{
Id = Uuid7.Guid(),
- IdCommitAuthor = idUser,
- Comment = comment,
- Creation = DateTimeOffset.UtcNow
+ IdAuthor = commitDto.IdAuthor,
+ Comment = commitDto.Comment,
+ Creation = commitDto.Creation,
};
db.Add(commit);
await db.SaveChangesAsync();
return commit.Id;
-
}
-
- public abstract Task GetOrCreate(Guid idUser, string comment, CancellationToken token);
}
diff --git a/DD.Persistence.Database/Repositories/ChangeLogRepository.cs b/DD.Persistence.Database/Repositories/ChangeLogRepository.cs
index dc59715..9dc0890 100644
--- a/DD.Persistence.Database/Repositories/ChangeLogRepository.cs
+++ b/DD.Persistence.Database/Repositories/ChangeLogRepository.cs
@@ -6,29 +6,34 @@ using DD.Persistence.Models.Requests;
using DD.Persistence.Repositories;
using Mapster;
using Microsoft.EntityFrameworkCore;
+using System;
using UuidExtensions;
namespace DD.Persistence.Database.Repositories;
public class ChangeLogRepository : IChangeLogRepository
{
private readonly DbContext db;
- private readonly IChangeLogCommitRepository changeLogCommitRepo;
- public ChangeLogRepository(DbContext db, IChangeLogCommitRepository changeLogCommitRepo)
+ public ChangeLogRepository(DbContext db)
{
this.db = db;
- this.changeLogCommitRepo = changeLogCommitRepo;
}
public async Task AddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token)
{
- var commit = changeLogCommitRepo.Get(commitDto);
- db.Set().Add(commit);
-
var entities = new List();
foreach (var values in commitDto.ChangeLogItems)
{
- var entity = CreateChangeLogFromDto(idDiscriminator, commit.Id, commit.IdCommitAuthor, values);
+ var entity = new ChangeLog()
+ {
+ Id = Uuid7.Guid(),
+ Creation = commitDto.Creation,
+ IdAuthor = commitDto.IdAuthor,
+ IdDiscriminator = idDiscriminator,
+ Value = values.Value,
+ IdCommit = commitDto.Id,
+ };
+
entities.Add(entity);
}
db.Set().AddRange(entities);
@@ -38,7 +43,7 @@ public class ChangeLogRepository : IChangeLogRepository
return result;
}
- public async Task MarkAsDeleted(Guid idEditor, IEnumerable ids, string comment, CancellationToken token)
+ public async Task MarkAsDeleted(Guid idCommit, IEnumerable ids, DateTimeOffset updateTime, CancellationToken token)
{
var query = db.Set()
.Where(s => ids.Contains(s.Id))
@@ -51,12 +56,16 @@ public class ChangeLogRepository : IChangeLogRepository
var entities = await query.ToArrayAsync(token);
- var result = await MarkAsObsolete(idEditor, entities, comment, token);
+ foreach (var entity in entities)
+ {
+ entity.Obsolete = updateTime;
+ entity.IdDiscriminator = idCommit;
+ }
- return result;
+ return await db.SaveChangesAsync(token);
}
- public async Task MarkAsDeleted(Guid idEditor, Guid idDiscriminator, string comment, CancellationToken token)
+ public async Task MarkAsDeleted(Guid idDiscriminator, Guid idCommit, DateTimeOffset updateTime, CancellationToken token)
{
var query = db.Set()
.Where(s => s.IdDiscriminator == idDiscriminator)
@@ -64,31 +73,16 @@ public class ChangeLogRepository : IChangeLogRepository
var entities = await query.ToArrayAsync(token);
- var result = await MarkAsObsolete(idEditor, entities, comment, token);
-
- return result;
- }
-
- private async Task MarkAsObsolete(Guid idEditor, IEnumerable entities, string comment, CancellationToken token)
- {
- var updateTime = DateTimeOffset.UtcNow;
- var commit = new ChangeLogCommit() {
- Comment = comment,
- Creation = updateTime,
- Id = Uuid7.Guid(),
- IdCommitAuthor = idEditor
- };
- db.Set().Add(commit);
-
foreach (var entity in entities)
{
entity.Obsolete = updateTime;
- entity.IdDiscriminator = commit.Id;
+ entity.IdDiscriminator = idCommit;
}
return await db.SaveChangesAsync(token);
}
+
public async Task ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token)
{
var result = 0;
@@ -98,7 +92,7 @@ public class ChangeLogRepository : IChangeLogRepository
using var transaction = await db.Database.BeginTransactionAsync(token);
- result += await MarkAsDeleted(commitDto.IdAuthor, changeLogIds, comment, token);
+ result += await MarkAsDeleted(commitDto.IdAuthor, changeLogIds, commitDto.Creation, token);
result += await AddRange(idDiscriminator, commitDto, token);
await transaction.CommitAsync(token);
@@ -117,9 +111,6 @@ public class ChangeLogRepository : IChangeLogRepository
using var transaction = await db.Database.BeginTransactionAsync(token);
- var commit = GetOrCreate(commitDto);
- db.Set().Add(commit);
-
foreach (var dto in commitDto.ChangeLogItems)
{
var updatedEntity = updatedEntities.GetValueOrDefault(dto.Id);
@@ -128,11 +119,19 @@ public class ChangeLogRepository : IChangeLogRepository
throw new ArgumentException($"Entity with id = {dto.Id} doesn't exist in Db", nameof(dto));
}
- var newEntity = CreateChangeLogFromDto(updatedEntity.IdDiscriminator, commit.Id, commitDto.IdAuthor, dto);
+ var newEntity = new ChangeLog()
+ {
+ Id = Uuid7.Guid(),
+ Creation = commitDto.Creation,
+ IdAuthor = commitDto.IdAuthor,
+ IdDiscriminator = updatedEntity.IdDiscriminator,
+ Value = dto.Value,
+ IdCommit = commitDto.Id,
+ };
dbSet.Add(newEntity);
updatedEntity.IdNext = newEntity.Id;
- updatedEntity.Obsolete = DateTimeOffset.UtcNow;
+ updatedEntity.Obsolete = commitDto.Creation;
}
var result = await db.SaveChangesAsync(token);
@@ -208,31 +207,6 @@ public class ChangeLogRepository : IChangeLogRepository
return datesOnly;
}
- private static ChangeLog CreateChangeLogFromDto(Guid idDiscriminator, Guid idCommit, Guid idAuthor, ChangeLogValuesDto dto)
- {
- var entity = new ChangeLog()
- {
- Id = Uuid7.Guid(),
- Creation = DateTimeOffset.UtcNow,
- IdAuthor = idAuthor,
- IdDiscriminator = idDiscriminator,
- Value = dto.Value,
- IdCommit = idCommit,
- };
-
- return entity;
- }
-
- private static ChangeLogCommit GetOrCreate(ChangeLogCommitDto commitDto)
- {
- return new ChangeLogCommit()
- {
- Comment = commitDto.Comment,
- Creation = DateTimeOffset.UtcNow,
- IdCommitAuthor = commitDto.IdAuthor
- };
- }
-
public async Task> GetGtDate(Guid idDiscriminator, DateTimeOffset dateBegin, CancellationToken token)
{
var date = dateBegin.ToUniversalTime();
diff --git a/DD.Persistence.Models/Requests/ChangeLogCommitDto.cs b/DD.Persistence.Models/Requests/ChangeLogCommitDto.cs
index 28a2f09..603f709 100644
--- a/DD.Persistence.Models/Requests/ChangeLogCommitDto.cs
+++ b/DD.Persistence.Models/Requests/ChangeLogCommitDto.cs
@@ -5,6 +5,16 @@
///
public class ChangeLogCommitDto
{
+ ///
+ /// Id
+ ///
+ public Guid Id { get; set; }
+
+ ///
+ /// Дата создания
+ ///
+ public DateTimeOffset Creation { get; set; }
+
///
/// Пользователь, совершающий коммит
///
@@ -13,13 +23,21 @@ public class ChangeLogCommitDto
///
/// Комментарий
///
- public string Comment { get; set; }
+ public string Comment { get; set; } = string.Empty;
///
/// Набор изменений
///
public IEnumerable ChangeLogItems { get; set; }
+ ///
+ /// ctor
+ ///
+ public ChangeLogCommitDto()
+ {
+
+ }
+
///
///
///
@@ -28,6 +46,7 @@ public class ChangeLogCommitDto
IdAuthor = idAuthor;
Comment = comment;
ChangeLogItems = changeLogItems;
+ Creation = DateTimeOffset.UtcNow;
}
}
diff --git a/DD.Persistence.Repository.Test/ChangeLogRepositoryTest.cs b/DD.Persistence.Repository.Test/ChangeLogRepositoryTest.cs
index 9f5f20a..22e11c1 100644
--- a/DD.Persistence.Repository.Test/ChangeLogRepositoryTest.cs
+++ b/DD.Persistence.Repository.Test/ChangeLogRepositoryTest.cs
@@ -5,20 +5,28 @@ using DD.Persistence.Models.Common;
using DD.Persistence.Models.Requests;
using DD.Persistence.Models;
using DD.Persistence.Repositories;
-using Shouldly;
using System.Text.Json;
using UuidExtensions;
+using DD.Persistence.API.Services;
+using Microsoft.Extensions.Caching.Memory;
+using DD.Persistence.Database;
namespace DD.Persistence.Repository.Test;
public class ChangeLogRepositoryTest : IClassFixture
{
private readonly PersistencePostgresContext context;
private readonly IChangeLogRepository repo;
+ private readonly RepositoryTestFixture fixture;
- public ChangeLogRepositoryTest(RepositoryTestFixture fixture)
+ public ChangeLogService service { get; }
+
+ public ChangeLogRepositoryTest(RepositoryTestFixture fixture, ChangeLogService changeLogService)
{
+ this.fixture = fixture;
context = fixture.GetDbContext();
- repo = new ChangeLogRepository(context);
+ //sut = new SetpointRepository(context);
+
+ //service = new ChangeLogService(cache, );
}
//Task MarkAsDeleted(Guid idEditor, IEnumerable ids, string comment, CancellationToken token);
@@ -26,7 +34,7 @@ public class ChangeLogRepositoryTest : IClassFixture
//Task MarkAsDeleted(Guid idEditor, Guid idDiscriminator, string comment, CancellationToken token);
//Task ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token);
- private async Task ChangeLogItem(Guid idDiscriminator)
+ private ChangeLogCommitDto CreateChangeLogItem(Guid idDiscriminator)
{
var idAuthor = Uuid7.Guid();
var changeLogItems = new List()
@@ -49,75 +57,75 @@ public class ChangeLogRepositoryTest : IClassFixture
public async Task AddRangeReturnSuccess()
{
//act
- var idDiscriminator = Uuid7.Guid();
- var commit = await ChangeLogItem(idDiscriminator);
- var result = await repo.AddRange(idDiscriminator, commit, CancellationToken.None);
+ var id Discriminator = Uuid7.Guid();
+ var commit = CreateChangeLogItem(idDiscriminator);
+ var result = await service.AddRange(idDiscriminator, commit, CancellationToken.None);
//assert
Assert.Equal(2, result);
}
- [Fact]
- public async Task UpdateRangeReturnSuccess()
- {
- var idDiscriminator = Uuid7.Guid();
- var commit1 = await ChangeLogItem(idDiscriminator);
- var result = await repo.AddRange(idDiscriminator, commit1, CancellationToken.None);
+ //[Fact]
+ //public async Task UpdateRangeReturnSuccess()
+ //{
+ // var idDiscriminator = Uuid7.Guid();
+ // var commit1 = await CreateChangeLogItem(idDiscriminator);
+ // var result = await repo.AddRange(idDiscriminator, commit1, CancellationToken.None);
- var commit2 = await ChangeLogItem(idDiscriminator);
- result = await repo.AddRange(idDiscriminator, commit2, CancellationToken.None);
+ // var commit2 = await CreateChangeLogItem(idDiscriminator);
+ // result = await repo.AddRange(idDiscriminator, commit2, CancellationToken.None);
- var items = await repo.GetGtDate(idDiscriminator, DateTimeOffset.UtcNow.AddDays(-1), CancellationToken.None);
+ // var items = await repo.GetGtDate(idDiscriminator, DateTimeOffset.UtcNow.AddDays(-1), CancellationToken.None);
- if (items == null)
- Assert.Fail("Не найдены элементы changeLog");
+ // if (items == null)
+ // Assert.Fail("Не найдены элементы changeLog");
- var updated = items.ToArray();
- foreach (var item in updated)
- {
- item.Value.Add("4", 4);
- }
+ // var updated = items.ToArray();
+ // foreach (var item in updated)
+ // {
+ // item.Value.Add("4", 4);
+ // }
- //act
- var commit = new ChangeLogCommitDto(Uuid7.Guid(), "Комментарий 2", updated);
- result = await repo.UpdateRange(commit, CancellationToken.None);
+ // //act
+ // var commit = new ChangeLogCommitDto(Uuid7.Guid(), "Комментарий 2", updated);
+ // result = await repo.UpdateRange(commit, CancellationToken.None);
- //assert
- //изменены 2 старые записи,
- //добавлены 2 новые записи
- //добавлен общий коммит
- //итого = 2+2+1 = 5
- Assert.Equal(5, result);
- }
+ // //assert
+ // //изменены 2 старые записи,
+ // //добавлены 2 новые записи
+ // //добавлен общий коммит
+ // //итого = 2+2+1 = 5
+ // Assert.Equal(5, result);
+ //}
- [Fact]
- public async Task ClearAndAddRangeReturnSuccess()
- {
- var idDiscriminator = Uuid7.Guid();
- var commit1 = await ChangeLogItem(idDiscriminator);
- var result = await repo.AddRange(idDiscriminator, commit1, CancellationToken.None);
+ //[Fact]
+ //public async Task ClearAndAddRangeReturnSuccess()
+ //{
+ // var idDiscriminator = Uuid7.Guid();
+ // var commit1 = await CreateChangeLogItem(idDiscriminator);
+ // var result = await repo.AddRange(idDiscriminator, commit1, CancellationToken.None);
- var commit2 = await ChangeLogItem(idDiscriminator);
- result = await repo.AddRange(idDiscriminator, commit2, CancellationToken.None);
+ // var commit2 = await CreateChangeLogItem(idDiscriminator);
+ // result = await repo.AddRange(idDiscriminator, commit2, CancellationToken.None);
- var commit3 = await ChangeLogItem(idDiscriminator);
- result = await repo.AddRange(idDiscriminator, commit3, CancellationToken.None);
+ // var commit3 = await CreateChangeLogItem(idDiscriminator);
+ // result = await repo.AddRange(idDiscriminator, commit3, CancellationToken.None);
- //act
- var commit4 = await ChangeLogItem(idDiscriminator);
- var items = await repo.GetGtDate(idDiscriminator, DateTimeOffset.UtcNow.AddDays(-1), CancellationToken.None);
- commit4.ChangeLogItems = items;
- result = await repo.ClearAndAddRange(idDiscriminator, commit4, CancellationToken.None);
+ // //act
+ // var commit4 = await CreateChangeLogItem(idDiscriminator);
+ // var items = await repo.GetGtDate(idDiscriminator, DateTimeOffset.UtcNow.AddDays(-1), CancellationToken.None);
+ // commit4.ChangeLogItems = items;
+ // result = await repo.ClearAndAddRange(idDiscriminator, commit4, CancellationToken.None);
- //assert
- //добавлены 3 записи и 3 коммита к ним,
- //добавлена 1 новая запись и 1 коммит к ней
- Assert.Equal(8, result);
+ // //assert
+ // //добавлены 3 записи и 3 коммита к ним,
+ // //добавлена 1 новая запись и 1 коммит к ней
+ // Assert.Equal(8, result);
- var paginationRequest = new PaginationRequest();
- var items2 = await repo.GetByDate(idDiscriminator, DateTimeOffset.UtcNow.AddMinutes(-10), paginationRequest, CancellationToken.None);
- }
+ // var paginationRequest = new PaginationRequest();
+ // var items2 = await repo.GetByDate(idDiscriminator, DateTimeOffset.UtcNow.AddMinutes(-10), paginationRequest, CancellationToken.None);
+ //}
diff --git a/DD.Persistence.Repository.Test/DD.Persistence.Repository.Test.csproj b/DD.Persistence.Repository.Test/DD.Persistence.Repository.Test.csproj
index 63b4134..d76682b 100644
--- a/DD.Persistence.Repository.Test/DD.Persistence.Repository.Test.csproj
+++ b/DD.Persistence.Repository.Test/DD.Persistence.Repository.Test.csproj
@@ -11,14 +11,15 @@
-
-
+
+
+
diff --git a/DD.Persistence.Repository.Test/RepositoryTestFixture.cs b/DD.Persistence.Repository.Test/RepositoryTestFixture.cs
index 81e3694..56a6857 100644
--- a/DD.Persistence.Repository.Test/RepositoryTestFixture.cs
+++ b/DD.Persistence.Repository.Test/RepositoryTestFixture.cs
@@ -10,7 +10,14 @@ namespace DD.Persistence.Repository.Test;
public class RepositoryTestFixture : IAsyncLifetime
{
- public readonly PostgreSqlContainer dbContainer = new PostgreSqlBuilder().Build();
+ public readonly PostgreSqlContainer dbContainer = new PostgreSqlBuilder()
+ .WithImage("timescale/timescaledb:latest-pg16")
+ .WithHostname("localhost")
+ .WithDatabase("persistence")
+ .WithUsername("postgres")
+ .WithPassword("postgres")
+ //.WithPortBinding("5462")
+ .Build();
public PersistencePostgresContext GetDbContext() => new(new DbContextOptionsBuilder()
diff --git a/DD.Persistence/Repositories/IChangeLogCommitRepository.cs b/DD.Persistence/Repositories/IChangeLogCommitRepository.cs
index a99785d..0babd3c 100644
--- a/DD.Persistence/Repositories/IChangeLogCommitRepository.cs
+++ b/DD.Persistence/Repositories/IChangeLogCommitRepository.cs
@@ -1,4 +1,5 @@
-using System;
+using DD.Persistence.Models.Requests;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -14,9 +15,8 @@ public interface IChangeLogCommitRepository
///
///
///
- ///
- ///
+ ///
///
///
- Task Add(Guid idUser, string comment, CancellationToken token);
+ Task Add(ChangeLogCommitDto commitDto, CancellationToken token);
}
diff --git a/DD.Persistence/Repositories/IChangeLogRepository.cs b/DD.Persistence/Repositories/IChangeLogRepository.cs
index eb87376..a4421d4 100644
--- a/DD.Persistence/Repositories/IChangeLogRepository.cs
+++ b/DD.Persistence/Repositories/IChangeLogRepository.cs
@@ -22,22 +22,22 @@ public interface IChangeLogRepository : ISyncWithDiscriminatorRepository
/// Пометить записи как удаленные
///
- ///
+ ///
/// ключи записей
- /// комментарий к удалению
+ ///
///
///
- Task MarkAsDeleted(Guid idEditor, IEnumerable ids, string comment, CancellationToken token);
+ Task MarkAsDeleted(Guid idCommit, IEnumerable ids, DateTimeOffset updateTime, CancellationToken token);
///
/// Пометить записи как удаленные
///
- ///
/// дискриминатор таблицы
- /// комментарий к удалению
+ ///
+ ///
///
///
- Task MarkAsDeleted(Guid idEditor, Guid idDiscriminator, string comment, CancellationToken token);
+ Task MarkAsDeleted(Guid idDiscriminator, Guid idCommit, DateTimeOffset updateTime, CancellationToken token);
///
/// Очистить и добавить новые