Ava3v.WebApi.Core (0.2.27)
Installation
dotnet nuget add source --name Administrator --username your_username --password your_token https://git.ava3v.ru/api/packages/Administrator/nuget/index.jsondotnet add package --source Administrator --version 0.2.27 Ava3v.WebApi.CoreAbout this package
Общее веб-ядро ava3v: minimal-API → MediatR (CQRS) с билдерами (GET/POST/PUT/DELETE/file/form-data), базовые команды/запросы/хендлеры, ValidationBehavior (FluentValidation), единый маппинг ошибок в HTTP, локализация, контексты (correlation/current-user), JWT. Извлечено из WareHub.
Ava3vLibs
Монорепозиторий общих .NET-библиотек ava3v.
- Общая версия пакетов —
<Version>вDirectory.Build.props(одна на всю монорепу). - Версии внешних зависимостей — в
Directory.Packages.props(Central Package Management), меняются в одном месте. - Приватный NuGet-фид:
https://git.ava3v.com/api/packages/Administrator/nuget.
Пакеты (зависимость строго вниз)
| Пакет | Зависит от | Назначение |
|---|---|---|
| Ava3v.Abstractions | — | Базовые контракты (ноль зависимостей): интерфейсы сущностей (IHasId/IHasParentId/IHasChildrenInfo и др.), EntityBase, DTO, Enumeration/UserKindEnum, контексты, Security, PagedResponse, паджинг-запросы (IPagedQuery/IHasSearch/ITreePagedQuery), ошибки бизнес-логики. |
| Ava3v.Components.Contract | Abstractions (+EFCore) | Грид-лоадер (фильтры/сортировка/поиск/уникальные значения по IQueryable) + построитель древовидного реестра. |
| Ava3v.WebApi.Core | Abstractions (+MediatR/AspNetCore/…) | minimal-API → MediatR (CQRS): билдеры (GET/POST/PUT/DELETE/file/form-data), middleware, локализация, хендлер-базы, JWT. |
| Ava3v.DataAccess | Abstractions (+EFCore.Relational) | Базовый DbContext (аудит/soft-delete/период действия), snake_case-конфиг сущностей, query-фильтры. |
Публикация
Токен Gitea (personal access token с правом write:package) держи у себя — в репо не коммитим.
Перед публикацией новой версии подними <Version> в Directory.Build.props (одну и ту же версию Gitea второй раз не примет; --skip-duplicate это проглотит).
Всё сразу (обычный путь)
cd ~/Ava3vLibs
rm -rf artifacts
dotnet pack Ava3vLibs.slnx -c Release -o artifacts
dotnet nuget push "artifacts/*.nupkg" \
--source https://git.ava3v.com/api/packages/Administrator/nuget \
--api-key <твой-gitea-токен> \
--skip-duplicate
По отдельности
Порядок важен, только если фид пустой:
Ava3v.Abstractionsпубликуй первым — остальные от него зависят.dotnet packлюбого проекта складывает.nupkgв общийartifacts/.
Общий шаблон:
cd ~/Ava3vLibs
PROJ=Ava3v.Abstractions # или Ava3v.Components.Contract / Ava3v.WebApi.Core / Ava3v.DataAccess
dotnet pack src/$PROJ/$PROJ.csproj -c Release -o artifacts
dotnet nuget push "artifacts/$PROJ.*.nupkg" \
--source https://git.ava3v.com/api/packages/Administrator/nuget \
--api-key <твой-gitea-токен> \
--skip-duplicate
Конкретно по каждому:
1. Ava3v.Abstractions (сначала)
dotnet pack src/Ava3v.Abstractions/Ava3v.Abstractions.csproj -c Release -o artifacts
dotnet nuget push "artifacts/Ava3v.Abstractions.*.nupkg" --source https://git.ava3v.com/api/packages/Administrator/nuget --api-key <токен> --skip-duplicate
2. Ava3v.Components.Contract
dotnet pack src/Ava3v.Components.Contract/Ava3v.Components.Contract.csproj -c Release -o artifacts
dotnet nuget push "artifacts/Ava3v.Components.Contract.*.nupkg" --source https://git.ava3v.com/api/packages/Administrator/nuget --api-key <токен> --skip-duplicate
3. Ava3v.WebApi.Core
dotnet pack src/Ava3v.WebApi.Core/Ava3v.WebApi.Core.csproj -c Release -o artifacts
dotnet nuget push "artifacts/Ava3v.WebApi.Core.*.nupkg" --source https://git.ava3v.com/api/packages/Administrator/nuget --api-key <токен> --skip-duplicate
4. Ava3v.DataAccess
dotnet pack src/Ava3v.DataAccess/Ava3v.DataAccess.csproj -c Release -o artifacts
dotnet nuget push "artifacts/Ava3v.DataAccess.*.nupkg" --source https://git.ava3v.com/api/packages/Administrator/nuget --api-key <токен> --skip-duplicate
Закоммитить исходники
git add -A
git commit -m "Ava3vLibs <version> — <что изменилось>"
git push
Как это потребляют другие проекты
В nuget.config потребителя добавить источник (один раз):
<packageSources>
<add key="ava3v" value="https://git.ava3v.com/api/packages/Administrator/nuget/index.json" />
</packageSources>
Затем нужные пакеты (транзитивно тянут Ava3v.Abstractions):
<PackageReference Include="Ava3v.WebApi.Core" Version="0.2.0" />
<PackageReference Include="Ava3v.Components.Contract" Version="0.2.0" />
<PackageReference Include="Ava3v.DataAccess" Version="0.2.0" />