16 Commits

Author SHA1 Message Date
Anatolii Grynchuk 584d036a09 Merge branch 'development' 2026-05-06 22:42:04 +03:00
Anatolii Grynchuk 1da2dd8579 fix: update RepositoryUrl in project files to correct domain 2026-05-06 22:41:21 +03:00
agrynco b434383f7e Merge pull request 'release: IT-631 fix EF repository base bugs' (#12) from development into main 2026-05-06 12:50:16 +03:00
agrynco 3f1371e33a Merge pull request 'fix: use GetByIdAsync in DeleteAsync(TEntityId)' (#11) from IT-631-fix-delete-async-getbyid into development 2026-05-06 12:50:04 +03:00
Anatolii Grynchuk 9c1da388d8 fix: use GetByIdAsync in DeleteAsync(TEntityId)
Replaced sync GetById with await GetByIdAsync to avoid blocking the thread inside an async method.

Ref: #IT-631
2026-05-06 12:46:35 +03:00
agrynco 1edcafdebd Merge pull request 'fix: eliminate multi-save in batch Add and DeleteAsync(TEntityId)' (#10) from IT-631-fix-delete into development 2026-05-06 12:45:09 +03:00
Anatolii Grynchuk 93461fd35e fix: eliminate multi-save in batch Add and DeleteAsync(TEntityId)
- Add(TEntity[]) now passes save:false in the loop and calls SaveChanges once at the end
- DeleteAsync(TEntityId) now calls DoRemove directly instead of Delete(TEntityId) to avoid the double-save from the sync overload chain

Ref: #IT-631
2026-05-06 12:43:27 +03:00
agrynco 52c9c9ab9e Merge pull request 'chore: upgrade ef core 10.0.7' (#9) from development into main 2026-05-06 02:20:53 +03:00
Anatolii Grynchuk 4020981eec chore: upgrade ef core 8.0.15 -> 10.0.7
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-06 02:20:44 +03:00
agrynco d7b7c2eb88 Merge pull request 'chore: downgrade ef core 8.0.15' (#8) from development into main 2026-05-06 01:55:16 +03:00
Anatolii Grynchuk 2b02374b19 chore: downgrade ef core 9.0.5 -> 8.0.15
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-06 01:55:07 +03:00
agrynco c630db2582 Merge pull request 'docs: switch task management and wiki to gitea, merge to development only for non-release changes' (#7) from docs/gitea-workflow-agents into development 2026-05-06 01:29:15 +03:00
Anatolii Grynchuk a58b4d9279 docs: switch task management and wiki to gitea, merge to development only for non-release changes
- remove YouTrack references from AGENTS.md
- use Gitea issues for task tracking
- merge to main only when a NuGet release is explicitly requested
- remove IT-642 link from README.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-06 01:29:01 +03:00
agrynco 1bab9c963d Merge pull request 'feat: rebuild base repository hierarchy, add readme and agents' (#6) from development into main 2026-05-06 01:16:30 +03:00
agrynco 6b68f099fa Merge pull request 'feat: expose UtcNow property on BaseDbContext' (#4) from development into main 2026-05-05 22:17:09 +03:00
agrynco b09777252b Merge pull request 'feat: add BaseDbContext, non-generic IEntity, fix Entity constructor' (#2) from development into main 2026-05-05 22:03:32 +03:00
6 changed files with 32 additions and 31 deletions
+12 -19
View File
@@ -6,7 +6,6 @@ This file is the authoritative source for hrynco-ef workflow, delivery, and role
- Command timeout: if a command runs longer than 10 minutes, report timeout and ask the user.
- Validate required services before task work:
- YouTrack authenticated access
- Gitea authenticated access and the `hrynco/hrynco-ef` repo
- TeamCity authenticated access
- If any startup check fails, stop and ask the user.
@@ -30,7 +29,6 @@ Print one startup report line per check:
Required report items:
- Workflow rules loaded
- YouTrack auth + reachability
- Gitea auth + reachability
- Gitea resource access (`hrynco/hrynco-ef`)
- TeamCity auth + reachability
@@ -47,7 +45,7 @@ Required report items:
- local `development` must match remote
- if not, fix that first
- On task start:
- set YouTrack state to `In Progress`
- create a Gitea issue in `hrynco/hrynco-ef` if one does not exist
- create a feature branch from `development`
- name the branch after the task
- Work only in the feature branch.
@@ -56,12 +54,12 @@ Required report items:
### Issue lifecycle
1. Product analyst creates/refines the YouTrack task.
2. Developer takes the task and starts implementation.
1. Product analyst creates/refines the Gitea issue.
2. Developer takes the issue and starts implementation.
3. Developer finishes implementation and hands off to code review.
4. Code reviewer reviews and either passes or returns to developer.
5. Repeat developer/reviewer cycles as needed.
6. Maximum five review rounds total for the same unresolved task state.
6. Maximum five review rounds total for the same unresolved issue state.
7. After review round five, if still unresolved, return to product analysis.
8. Tester validates the implementation against acceptance criteria.
9. Developer waits for user validation approval.
@@ -69,7 +67,7 @@ Required report items:
### Task rules
- Create the YouTrack task before development starts.
- Create the Gitea issue before development starts.
- Default assignee is AI unless the task flow requires another assignee.
- Define scope and acceptance criteria.
- Tasks must be independently deliverable and testable.
@@ -89,22 +87,17 @@ After explicit user validation approval:
- push the feature branch
- create PR from feature branch to `development`
- merge that PR
- create PR from `development` to `main`
- merge that PR
- wait for TC `HrynCo / HrynCo.EF / publish` to finish successfully
- set the YouTrack task to `Done`
- calculate exact Spent Time from YouTrack timestamps only
- set the YouTrack Spent Time field
- **do not merge to `main` unless a new NuGet package release is explicitly requested**
- when a release is requested: create PR from `development` to `main`, merge, wait for TC `HrynCo / HrynCo.EF / publish` to finish successfully
- close the Gitea issue
- switch back to `development`
- pull latest `development`
- ensure local `development` and `main` match their remotes
- ensure local `development` matches remote
- leave the repository in a clean end state
### Spent Time
- Do not estimate or infer Spent Time.
- Use exact YouTrack creation and Done timestamps only.
- If exact timestamps are unavailable, stop and ask the user.
- Do not track spent time — this repo uses Gitea, not YouTrack.
### Command output
@@ -115,9 +108,9 @@ After explicit user validation approval:
- Keep command output summaries concise.
- Do not dump raw command output unless needed.
- Use direct links in YouTrack and implementation notes when stable links exist.
- Use direct links to Gitea issues and wiki pages in implementation notes when stable links exist.
- Use emojis intentionally for scanning, not mechanically.
- Commit messages must be Conventional Commit style, lowercase subject, short body, and final line `Ref: IT-<number>`.
- Commit messages must be Conventional Commit style, lowercase subject, short body.
## 6. Audio
+3 -3
View File
@@ -6,8 +6,8 @@
<!-- HrynCo shared packages -->
<PackageVersion Include="HrynCo.Common" Version="1.0.0" />
<!-- Entity Framework Core -->
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="9.0.5" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.5" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.5" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="10.0.7" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.7" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="10.0.7" />
</ItemGroup>
</Project>
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
@@ -10,7 +10,8 @@
<Description>Abstract DAL contracts for HrynCo applications: entities, repository and unit-of-work interfaces.</Description>
<PackageTags>hrynco dal abstract entity repository unitofwork</PackageTags>
<RepositoryType>git</RepositoryType>
<RepositoryUrl>https://gitea.grynco.com.ua/hrynco/hrynco-ef.git</RepositoryUrl>
<RepositoryUrl>https://gitea.hrynco.com/hrynco/hrynco-ef.git</RepositoryUrl>
</PropertyGroup>
</Project>
+11 -2
View File
@@ -40,7 +40,12 @@ public abstract class BaseEfRepository<TDbContext, TEntity, TEntityId> :
{
foreach (TEntity entity in entities)
{
Add(entity, save);
Add(entity, save: false);
}
if (save)
{
DbContext.SaveChanges();
}
}
@@ -84,7 +89,11 @@ public abstract class BaseEfRepository<TDbContext, TEntity, TEntityId> :
public async Task DeleteAsync(TEntityId id)
{
Delete(id);
TEntity? entity = await GetByIdAsync(id);
if (entity != null)
{
DoRemove(entity);
}
await DbContext.SaveChangesAsync();
}
+3 -2
View File
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
@@ -10,7 +10,7 @@
<Description>Entity Framework Core base implementations for HrynCo applications: generic repository and unit-of-work.</Description>
<PackageTags>hrynco dal ef entityframework repository unitofwork</PackageTags>
<RepositoryType>git</RepositoryType>
<RepositoryUrl>https://gitea.grynco.com.ua/hrynco/hrynco-ef.git</RepositoryUrl>
<RepositoryUrl>https://gitea.hrynco.com/hrynco/hrynco-ef.git</RepositoryUrl>
</PropertyGroup>
<ItemGroup>
@@ -28,3 +28,4 @@
</ItemGroup>
</Project>
-3
View File
@@ -202,6 +202,3 @@ services.AddScoped<IRepository<Product>, ProductRepository>();
services.AddScoped<IUnitOfWork, EfUnitOfWork<YourDbContext>>();
```
## Related
- [IT-642](https://yt.grynco.com.ua/issue/IT-642) — Extract `PagedResult` builder as reusable `IQueryable<T>` extension