40 lines
896 B
Markdown
40 lines
896 B
Markdown
# Website Page Queries (Server)
|
|
|
|
This document defines the only allowed server-side data fetching shape for `apps/website` routes.
|
|
|
|
## 1) Purpose
|
|
|
|
Page Queries are server-side composition classes that:
|
|
|
|
- call services that call `apps/api`
|
|
- assemble a Page DTO
|
|
- return an explicit result describing route outcome
|
|
|
|
They do not implement business rules.
|
|
|
|
## 2) Result type (no null)
|
|
|
|
Page Queries MUST return a discriminated union (`PageQueryResult`):
|
|
|
|
- `ok` with `{ dto }`
|
|
- `notFound`
|
|
- `redirect` with `{ to }`
|
|
- `error` with `{ errorId }`
|
|
|
|
Pages MUST switch on this result and call:
|
|
|
|
- `notFound()` for `notFound`
|
|
- `redirect()` for `redirect`
|
|
|
|
## 3) Forbidden responsibilities
|
|
|
|
Page Queries MUST NOT:
|
|
|
|
- format values for display
|
|
- sort/filter (canonical or view-only)
|
|
- instantiate ViewModels
|
|
- instantiate Display Objects
|
|
|
|
If sorting/filtering is needed, it MUST be added to `apps/api`.
|
|
|