negyedik gyakorlat + megoldasok

This commit is contained in:
magdo
2026-03-04 20:02:39 +01:00
parent afc3777ac9
commit 388aa908de
217 changed files with 19791 additions and 0 deletions
@@ -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