negyedik gyakorlat + megoldasok
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user