scaffold-read
Guide for adding a new read operation (query) to the Backend. Focuses on Marten queries, Projections, Caching, and Pagination.
Installation
Suivez les instructions du dépôt pour votre agent. Consultez les fichiers et dépendances avant l’installation.
Voir la source ↗GuidesInstructions
Follow this guide to implement a read-only endpoint in the Backend (ApiService) using strict project standards.
-
Define the DTO
- Create a
recordinsrc/Shared/BookStore.Shared/Models/. -
Properties:
Guid Id,string Name, etc. -
Localization (Text): Map localized text to a single
string(e.g.,string Description), NOT a Dictionary. -
Data Maps: Use
IReadOnlyDictionary<string, T>for non-text maps (e.g.,Prices).
- Create a
-
Define the Projection
- Open/Create
src/BookStore.ApiService/Projections/{Resource}Projection.cs. -
Template:
templates/Projection.cs -
Localization Storage: Use
Dictionary<string, string>for storing all translations (e.g.,Descriptions,Biographies). - Reference: See marten-guide for projection patterns.
- Open/Create
-
Expose the Endpoint
- Open
src/BookStore.ApiService/Endpoints/{Resource}Endpoints.cs. -
Template:
templates/Endpoint.cs
- Open
-
Implement Caching (HybridCache)
- Wrap logic in
cache.GetOrCreateLocalizedAsync(auto-appends culture to cache key). - Key: Include page, size, sort, order (culture added automatically).
-
Tags: Use
CacheTags.{Resource}Listor$\"{Resource.ToLower()}:{id}\". -
Options: Set
Expiration(L2/Redis) andLocalCacheExpiration(L1/memory). - Reference: See caching-guide for HybridCache patterns.
- Wrap logic in
-
Implement Query (Marten)
- Use
await using var session = store.QuerySession();. -
Query:
session.Query<Projection>() -
Filter:
.Where(x => !x.Deleted) -
Paginate:
.ToPagedListAsync(page, pageSize, token)
- Use
-
Apply Localization
- Map from Projection to DTO.
-
Text: Use
LocalizationHelper.GetLocalizedValue(proj.Descriptions, culture, defaultCulture, ""). -
Maps: Copy directly (e.g.,
Prices = proj.Prices).
-
Client Integration
-
Interface: Create
src/Client/BookStore.Client/IGet{Resource}Endpoint.csmanually. -
Registration: Add to
BookStoreClientExtensions.cs.
-
Interface: Create
// turbo 8. Verify
- Run
/verify-featureto ensure build and tests pass.
Related Skills
Prerequisites:
-
/scaffold-write- Ensure write operations exist before adding reads -
/scaffold-projection- For detailed projection patterns and localization
Next Steps:
-
/scaffold-frontend-feature- Create UI to consume the query -
/scaffold-test- Create integration tests for the endpoint -
/verify-feature- Complete verification
Debugging:
-
/debug-cache- If caching issues occur
See Also:
- scaffold-projection - Advanced projection patterns
- scaffold-write - Related write operations
- caching-guide - HybridCache patterns
- localization-guide - Localization patterns
- ApiService AGENTS.md - Caching and localization patterns
Exemples
Consultez les exemples du dépôt source.
Voir la source ↗Historique source
- Date d’indexation
- 2026-01-20
- Mise à jour de l’index
- 2026-01-26
- Branch
- main
Les dates concernent ce répertoire. Consultez le dépôt pour l’historique du code.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!