You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Type : une classe qui implémente une interface de use-cases
Dépendance : domain, use-cases
Input : un client Prisma et autres au besoin
Fonction :
loader : aucune logique métier, requête la base de données ou appel un système externe et transforme le Record en ReadModel
repository : aucune logique métier, ça prend en paramètre un objet métier pour l’écrire en base de données et renvoie rien ou une indication si ça c’est mal passé
Output
Loader (lecture) : un ReadModel
Repository (écriture) : un ou plusieurs objets du domain
Gateway : à définir
presenters
Nommage (CamelCase) : leNomDeLaPageController
Type : une fonction
Dépendance : aucune
Input : un ReadModel
Fonction : aucune logique métier, transforme le ReadModel en ViewModel pour remplir les trous d’un component
Output : un ViewModel
use-cases/commands
Nommage (PascalCase) : LaRegleMetier
Type : une classe qui implémente CommandHandler
Dépendance : domain
Input : un repository et une Comand (Struct)
Fonction :
on y met toute la logique liée à une règle métier pour écrire en base de données
doit être pur, interdication d'y mettre des choses aléatoires du genre new Date(), Math.random, ...
Output : un Result (un message d’erreur ou ok)
Les erreurs ne sont pas encore utilisées
use-cases/queries
Nommage (PascalCase) : LaRegleMetier
Type : une classe qui implémente QueryHandler ou une interface qu’implémente une gateways
Dépendance : domain
Input : un Loader
Fonction :
orchestre pour la lecture (classe) ou rien (interface)
doit être pur, interdication d'y mettre des choses aléatoires du genre new Date(), Math.random, ...
Output : un ReadModel (Struct, Date, Set, Map ou primitive uniquement)
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Schéma de notre achitecture
app (controllers)
components
,gateways
,presenters
etuse-cases
params
ousearchParams
ou riensearchParams
et lesparams
parce que l’utilisateur peut les bidouillerloader
(+query
) +presenter
+component
component
title
unique de la pageapi (controllers)
gateways
etuse-cases
request
request.nextUrl.searchParams
parce que l’utilisateur peut les bidouillerloader
(+query
)json
app/api/actions aka server actions (controllers)
domain
,gateways
etuse-cases
actionParams
ou rienactionParams
s’ils existent aveczod
parce que l’utilisateur peut les bidouillercommand
en injectant sonrepository
pour écrire en base de donnéesResult
(un tableau de message d’erreur ou ok)ClientContext
plutôt qu'appelée directement dans uncomponent
components
components
etpresenters
ViewModel
tsx
domain
Entity
ouValueObject
domain
state
pour avoir l'état de l'objetstate
et des méthodes métiergateways
use-cases
domain
,use-cases
Prisma
et autres au besoinRecord
enReadModel
ReadModel
domain
presenters
ReadModel
ReadModel
enViewModel
pour remplir les trous d’uncomponent
ViewModel
use-cases/commands
CommandHandler
domain
repository
et uneComand
(Struct)Result
(un message d’erreur ou ok)use-cases/queries
QueryHandler
ou une interface qu’implémente unegateways
domain
Loader
ReadModel
(Struct, Date, Set, Map ou primitive uniquement)shared
Beta Was this translation helpful? Give feedback.
All reactions