# Második Gyakorlat - MINTA Megoldás Ez a mappa tartalmazza a második gyakorlat **teljes, működő megoldását**. ## Amit implementáltunk: ### 1. **Prisma ORM + SQLite** - Prisma schema definiálása - User model adatbázis szinten - Migrációk kezelése ### 2. **CQRS Pattern + Layered Architecture** - **API Layer**: Controllers, Routes - **Application Layer**: Commands, Queries, Handlers - **Domain Layer**: Models, Interfaces - **Infrastructure Layer**: Prisma, Repositories ### 3. **Repository Pattern** - `IUserRepository` interface - `UserRepository` Prisma implementáció - Minden adatbázis művelet a repository-n keresztül ### 4. **Domain Model** - User osztály üzleti logikával - Validációk - Helper metódusok (isAdmin, canEdit, validate) ## Indítás ```bash npm install npx prisma generate npx prisma migrate dev --name init npm run dev ``` A szerver elindul a `http://localhost:3000` címen. ## API Endpoints - `GET /api/users` - Összes user - `GET /api/users/:id` - Egy user - `POST /api/users` - User létrehozása - `PUT /api/users/:id` - User frissítése - `DELETE /api/users/:id` - User törlése ## Példa Használat ```bash # User létrehozása curl -X POST http://localhost:3000/api/users \ -H "Content-Type: application/json" \ -d '{ "email": "test@test.com", "name": "Test User", "password": "password123" }' # Összes user lekérése curl http://localhost:3000/api/users # User frissítése curl -X PUT http://localhost:3000/api/users/1 \ -H "Content-Type: application/json" \ -d '{ "name": "Updated Name" }' # User törlése curl -X DELETE http://localhost:3000/api/users/1 ``` ## Tanulási Pontok 1. **Prisma ORM**: Modern ORM használata Node.js-ben 2. **SQLite**: Egyszerű file-based adatbázis 3. **CQRS**: Command/Query szétválasztás 4. **Layered Architecture**: Rétegezett architektúra 5. **Domain Model**: Üzleti logika a domain rétegben 6. **Repository Pattern**: Adatelérés absztrakciója