Compare commits
13 Commits
1bab9c963d
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 584d036a09 | |||
| 1da2dd8579 | |||
| b434383f7e | |||
| 3f1371e33a | |||
| 9c1da388d8 | |||
| 1edcafdebd | |||
| 93461fd35e | |||
| 52c9c9ab9e | |||
| 4020981eec | |||
| d7b7c2eb88 | |||
| 2b02374b19 | |||
| c630db2582 | |||
| a58b4d9279 |
@@ -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.
|
- Command timeout: if a command runs longer than 10 minutes, report timeout and ask the user.
|
||||||
- Validate required services before task work:
|
- Validate required services before task work:
|
||||||
- YouTrack authenticated access
|
|
||||||
- Gitea authenticated access and the `hrynco/hrynco-ef` repo
|
- Gitea authenticated access and the `hrynco/hrynco-ef` repo
|
||||||
- TeamCity authenticated access
|
- TeamCity authenticated access
|
||||||
- If any startup check fails, stop and ask the user.
|
- If any startup check fails, stop and ask the user.
|
||||||
@@ -30,7 +29,6 @@ Print one startup report line per check:
|
|||||||
Required report items:
|
Required report items:
|
||||||
|
|
||||||
- Workflow rules loaded
|
- Workflow rules loaded
|
||||||
- YouTrack auth + reachability
|
|
||||||
- Gitea auth + reachability
|
- Gitea auth + reachability
|
||||||
- Gitea resource access (`hrynco/hrynco-ef`)
|
- Gitea resource access (`hrynco/hrynco-ef`)
|
||||||
- TeamCity auth + reachability
|
- TeamCity auth + reachability
|
||||||
@@ -47,7 +45,7 @@ Required report items:
|
|||||||
- local `development` must match remote
|
- local `development` must match remote
|
||||||
- if not, fix that first
|
- if not, fix that first
|
||||||
- On task start:
|
- 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`
|
- create a feature branch from `development`
|
||||||
- name the branch after the task
|
- name the branch after the task
|
||||||
- Work only in the feature branch.
|
- Work only in the feature branch.
|
||||||
@@ -56,12 +54,12 @@ Required report items:
|
|||||||
|
|
||||||
### Issue lifecycle
|
### Issue lifecycle
|
||||||
|
|
||||||
1. Product analyst creates/refines the YouTrack task.
|
1. Product analyst creates/refines the Gitea issue.
|
||||||
2. Developer takes the task and starts implementation.
|
2. Developer takes the issue and starts implementation.
|
||||||
3. Developer finishes implementation and hands off to code review.
|
3. Developer finishes implementation and hands off to code review.
|
||||||
4. Code reviewer reviews and either passes or returns to developer.
|
4. Code reviewer reviews and either passes or returns to developer.
|
||||||
5. Repeat developer/reviewer cycles as needed.
|
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.
|
7. After review round five, if still unresolved, return to product analysis.
|
||||||
8. Tester validates the implementation against acceptance criteria.
|
8. Tester validates the implementation against acceptance criteria.
|
||||||
9. Developer waits for user validation approval.
|
9. Developer waits for user validation approval.
|
||||||
@@ -69,7 +67,7 @@ Required report items:
|
|||||||
|
|
||||||
### Task rules
|
### 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.
|
- Default assignee is AI unless the task flow requires another assignee.
|
||||||
- Define scope and acceptance criteria.
|
- Define scope and acceptance criteria.
|
||||||
- Tasks must be independently deliverable and testable.
|
- Tasks must be independently deliverable and testable.
|
||||||
@@ -89,22 +87,17 @@ After explicit user validation approval:
|
|||||||
- push the feature branch
|
- push the feature branch
|
||||||
- create PR from feature branch to `development`
|
- create PR from feature branch to `development`
|
||||||
- merge that PR
|
- merge that PR
|
||||||
- create PR from `development` to `main`
|
- **do not merge to `main` unless a new NuGet package release is explicitly requested**
|
||||||
- merge that PR
|
- when a release is requested: create PR from `development` to `main`, merge, wait for TC `HrynCo / HrynCo.EF / publish` to finish successfully
|
||||||
- wait for TC `HrynCo / HrynCo.EF / publish` to finish successfully
|
- close the Gitea issue
|
||||||
- set the YouTrack task to `Done`
|
|
||||||
- calculate exact Spent Time from YouTrack timestamps only
|
|
||||||
- set the YouTrack Spent Time field
|
|
||||||
- switch back to `development`
|
- switch back to `development`
|
||||||
- pull latest `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
|
- leave the repository in a clean end state
|
||||||
|
|
||||||
### Spent Time
|
### Spent Time
|
||||||
|
|
||||||
- Do not estimate or infer Spent Time.
|
- Do not track spent time — this repo uses Gitea, not YouTrack.
|
||||||
- Use exact YouTrack creation and Done timestamps only.
|
|
||||||
- If exact timestamps are unavailable, stop and ask the user.
|
|
||||||
|
|
||||||
### Command output
|
### Command output
|
||||||
|
|
||||||
@@ -115,9 +108,9 @@ After explicit user validation approval:
|
|||||||
|
|
||||||
- Keep command output summaries concise.
|
- Keep command output summaries concise.
|
||||||
- Do not dump raw command output unless needed.
|
- 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.
|
- 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
|
## 6. Audio
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
<!-- HrynCo shared packages -->
|
<!-- HrynCo shared packages -->
|
||||||
<PackageVersion Include="HrynCo.Common" Version="1.0.0" />
|
<PackageVersion Include="HrynCo.Common" Version="1.0.0" />
|
||||||
<!-- Entity Framework Core -->
|
<!-- Entity Framework Core -->
|
||||||
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="9.0.5" />
|
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="10.0.7" />
|
||||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.5" />
|
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.7" />
|
||||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.5" />
|
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="10.0.7" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net10.0</TargetFramework>
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
@@ -10,7 +10,8 @@
|
|||||||
<Description>Abstract DAL contracts for HrynCo applications: entities, repository and unit-of-work interfaces.</Description>
|
<Description>Abstract DAL contracts for HrynCo applications: entities, repository and unit-of-work interfaces.</Description>
|
||||||
<PackageTags>hrynco dal abstract entity repository unitofwork</PackageTags>
|
<PackageTags>hrynco dal abstract entity repository unitofwork</PackageTags>
|
||||||
<RepositoryType>git</RepositoryType>
|
<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>
|
</PropertyGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,12 @@ public abstract class BaseEfRepository<TDbContext, TEntity, TEntityId> :
|
|||||||
{
|
{
|
||||||
foreach (TEntity entity in entities)
|
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)
|
public async Task DeleteAsync(TEntityId id)
|
||||||
{
|
{
|
||||||
Delete(id);
|
TEntity? entity = await GetByIdAsync(id);
|
||||||
|
if (entity != null)
|
||||||
|
{
|
||||||
|
DoRemove(entity);
|
||||||
|
}
|
||||||
await DbContext.SaveChangesAsync();
|
await DbContext.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net10.0</TargetFramework>
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
<Description>Entity Framework Core base implementations for HrynCo applications: generic repository and unit-of-work.</Description>
|
<Description>Entity Framework Core base implementations for HrynCo applications: generic repository and unit-of-work.</Description>
|
||||||
<PackageTags>hrynco dal ef entityframework repository unitofwork</PackageTags>
|
<PackageTags>hrynco dal ef entityframework repository unitofwork</PackageTags>
|
||||||
<RepositoryType>git</RepositoryType>
|
<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>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -28,3 +28,4 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
|
|||||||
@@ -202,6 +202,3 @@ services.AddScoped<IRepository<Product>, ProductRepository>();
|
|||||||
services.AddScoped<IUnitOfWork, EfUnitOfWork<YourDbContext>>();
|
services.AddScoped<IUnitOfWork, EfUnitOfWork<YourDbContext>>();
|
||||||
```
|
```
|
||||||
|
|
||||||
## Related
|
|
||||||
|
|
||||||
- [IT-642](https://yt.grynco.com.ua/issue/IT-642) — Extract `PagedResult` builder as reusable `IQueryable<T>` extension
|
|
||||||
|
|||||||
Reference in New Issue
Block a user