Bonjour,

Je dois faire un API JSON RPC (développée en NodeJS).
Ma DB peut être scindée en deux sous-système : Inventaire et Tâches

J'ai commencé à la développer et je suis partie sur 3 couches :

API Controller
c'est simplement le serveur qui reçoit et check les requêtes http avant de les transmettre en dessous

Service Layer
Un fichier par sous-système.
Elle ne touche pas directement aux données en base mais demande à la DAL de le faire. En plus elle assure aussi la logique métier :
  • si besoin reformatte les données reçue du dessus
  • appelle les méthodes de la couche DAL dans le bon contexte (tâches, transactions) et le bon ordre
  • Gère les erreurs (paramètre manquant pour la couche du dessous, etc.)


Data Acces Layer
En gros un repo pour chaque table qui gère ses query CRUD


Mon problème est sur les deux dernières couches : je suis parti là dessus en pensant séparer la logique métiers de l'accès aux données :
- Service Layer : pour formatter, savoir ce qu'il faut extraire/insérer, etc. sans agir directement sur la base
- DAL : agit directement sur la base, chaque repo gère ses query et insert/select sans "savoir pourquoi"

Sauf que j'ai besoin de mettre en place une query (exemple ci-dessous) qui a besoin d'utiliser plusieurs tables donc je me demande si j'ai choisi la bonne solution.
Si je la mets dans ma DAL, un repo ne gèrera pas que sa table, donc elle devrai être dans ma Service Layer
Si je la mets dans ma Service Layer, cette couche accedera directement au données, donc elle devrai être dans ma DAL

Merci d'avance pour vos conseils!

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
select a.id
	from a
	join b on b.aId=a.id
	join c on c.aId=a.id
		where a.foo='val1'
		and b.foo='val2'
		and b.bar='val3'
		and b.baz='val4'
		and c.foo='val5'