backend feladat
This commit is contained in:
@@ -37,26 +37,26 @@ src/
|
||||
|
||||
### Rétegek Részletes Leírása
|
||||
|
||||
#### 1. **Domain Layer** (Domain réteg)
|
||||
#### 1. **Domain Réteg** (Domain Layer)
|
||||
- **Felelősség**: Az alkalmazás magját képező interfészek és domain modellek
|
||||
- **Tartalma**: Repository interfészek (IUserRepository)
|
||||
- **Függőség**: Nincs más rétegre való függősége
|
||||
|
||||
#### 2. **Infrastructure Layer** (Infrastruktúra réteg)
|
||||
#### 2. **Infrastructure Réteg** (Infrastructure Layer)
|
||||
- **Felelősség**: Technikai implementációk (adatbázis, fájlkezelés, külső API-k)
|
||||
- **Tartalma**: Repository implementációk, adattárolás
|
||||
- **Függőség**: Domain layer-től függ (implementálja az interfészeket)
|
||||
- **Függőség**: Domain rétegtől függ (implementálja az interfészeket)
|
||||
|
||||
#### 3. **Application Layer** (Alkalmazás réteg)
|
||||
#### 3. **Application Réteg** (Application Layer)
|
||||
- **Felelősség**: Üzleti logika, use case-ek implementálása
|
||||
- **Tartalma**: Commands, CommandHandlers, Queries, QueryHandlers
|
||||
- **Függőség**: Domain layer-től függ
|
||||
- **Függőség**: Domain rétegtől függ
|
||||
- **CQRS Pattern**: Írás (Command) és olvasás (Query) műveletek szétválasztása
|
||||
|
||||
#### 4. **API Layer** (API réteg)
|
||||
#### 4. **API Réteg** (API Layer)
|
||||
- **Felelősség**: HTTP kérések kezelése, routing, válaszok küldése
|
||||
- **Tartalma**: Controllers, Routers, Server konfiguráció
|
||||
- **Függőség**: Application és Infrastructure layer-től függ
|
||||
- **Függőség**: Application és Infrastructure rétegtől függ
|
||||
|
||||
---
|
||||
|
||||
@@ -155,7 +155,7 @@ A `package.json` az **npm projekt szíve** - tartalmazza a metaadatokat, függő
|
||||
- `express`: ^5.2.1 - Web framework
|
||||
- `^` (caret): Automatikus minor/patch update-ek engedélyezése
|
||||
- 5.x.x verzió tartományon belül
|
||||
- `nodemon`: ^3.1.11 - Fejlesztői szerverAutomatikus újraindítás
|
||||
- `nodemon`: ^3.1.11 - Fejlesztői szerver automatikus újraindítása
|
||||
- Érdemes `devDependencies`-be tenni (csak fejlesztéshez kell)
|
||||
|
||||
**Létrehozási módok:**
|
||||
@@ -215,7 +215,7 @@ npm install
|
||||
|
||||
---
|
||||
|
||||
### 2. Domain Layer Implementálás
|
||||
### 2. Domain Réteg Implementálás
|
||||
|
||||
#### 2.1 IUserRepository.js - Repository Interface
|
||||
|
||||
@@ -225,7 +225,7 @@ npm install
|
||||
|
||||
**Részletes leírás:**
|
||||
|
||||
A Domain Layer középpontjában az interfészek állnak. JavaScript-ben nincs natív interfész támogatás (mint pl. TypeScript-ben vagy Java-ban), de osztályokkal szimulálhatjuk ezt a viselkedést.
|
||||
A Domain réteg középpontjában az interfészek állnak. JavaScript-ben nincs natív interfész támogatás (mint pl. TypeScript-ben vagy Java-ban), de osztályokkal szimulálhatjuk ezt a viselkedést.
|
||||
|
||||
**Mit kell létrehozni:**
|
||||
|
||||
@@ -277,7 +277,7 @@ export class IUserRepository {
|
||||
|
||||
---
|
||||
|
||||
### 3. Infrastructure Layer Implementálás
|
||||
### 3. Infrastructure Réteg Implementálás
|
||||
|
||||
#### 3.1 user.json - Adat fájl
|
||||
|
||||
@@ -448,7 +448,7 @@ export class UserRepository extends IUserRepository {
|
||||
|
||||
---
|
||||
|
||||
### 4. Application Layer - Query Implementálás
|
||||
### 4. Application Réteg - Query Implementálás
|
||||
|
||||
#### 4.1 GetAllUsersQuery
|
||||
|
||||
@@ -597,7 +597,7 @@ export class GetUserByIdQuery {
|
||||
**Error Handling:**
|
||||
- A dobott hiba később a Controller-ben lesz elkapva
|
||||
- A Controller alakítja át HTTP 404 válasszá
|
||||
- Ez szépen szétválasztja a rétegeket: Application Layer nem tud HTTP-ről, csak üzleti hibákat dob
|
||||
- Ez szépen szétválasztja a rétegeket: Application réteg nem tud HTTP-ről, csak üzleti hibákat dob
|
||||
|
||||
<details>
|
||||
<summary>📄 <strong>Teljes kód megtekintése</strong></summary>
|
||||
@@ -622,7 +622,7 @@ export class GetUserByIdQueryHandler {
|
||||
|
||||
---
|
||||
|
||||
### 5. Application Layer - Command Implementálás
|
||||
### 5. Application Réteg - Command Implementálás
|
||||
|
||||
#### 5.1 CreateUserCommand
|
||||
|
||||
@@ -688,7 +688,7 @@ if (!command.name || !command.email) {
|
||||
}
|
||||
```
|
||||
- Name és email **kötelező mezők**
|
||||
- Ez üzleti logika - az Application Layer felelőssége
|
||||
- Ez üzleti logika - az Application réteg felelőssége
|
||||
- Ha valamelyik hiányzik, kivételt dobunk
|
||||
- Later: Bővíthető email formátum ellenőrzéssel, egyediség ellenőrzéssel, stb.
|
||||
|
||||
@@ -928,7 +928,7 @@ if (!deleted) {
|
||||
|
||||
**3. Visszatérési érték:**
|
||||
- **Nincs explicit return!**
|
||||
- DELETE művelet nem ad vissza adatot (ún. "void" műv elet)
|
||||
- DELETE művelet nem ad vissza adatot (ún. "void" művelet)
|
||||
- A Controller HTTP 204 No Content választ küld
|
||||
|
||||
**Fontos különbség:**
|
||||
@@ -962,17 +962,17 @@ export class DeleteUserCommandHandler {
|
||||
|
||||
---
|
||||
|
||||
### 6. API Layer Implementálás
|
||||
### 6. API Réteg Implementálás
|
||||
|
||||
#### 6.1 userController.js - Controller
|
||||
|
||||
**Fájl**: `src/API/controllers/userController.js`
|
||||
|
||||
**Cél**: HTTP kérések kezelése és koordináció az Application layer-rel.
|
||||
**Cél**: HTTP kérések kezelése és koordináció az Application réteggel.
|
||||
|
||||
**Részletes leírás:**
|
||||
|
||||
A Controller a **Presentation Layer** része - ő az, aki tudja, mi az a HTTP, mi az a request és response. Az Application Layer-t (Handler-ek) használja az üzleti logika végrehajtására.
|
||||
A Controller a **Presentation réteg** része - ő az, aki tudja, mi az a HTTP, mi az a request és response. Az Application réteget (Handler-ek) használja az üzleti logika végrehajtására.
|
||||
|
||||
**Fájl szerkezete:**
|
||||
|
||||
@@ -1264,8 +1264,6 @@ app.listen(PORT, () => {
|
||||
});
|
||||
```
|
||||
|
||||
</details>trong></summary>
|
||||
|
||||
```javascript
|
||||
import express from 'express';
|
||||
import { UserController } from '../controllers/userController.js';
|
||||
@@ -1307,11 +1305,7 @@ app.listen(PORT, () => {
|
||||
});
|
||||
```
|
||||
|
||||
**Magyarázat:**
|
||||
|
||||
- **express.json()**: JSON body parser middleware (kötelező a POST/PUT kérésekhez)
|
||||
- **Base path**: `/users` prefix minden user route-hoz
|
||||
- **Port**: 3000 (módosítható szükség szerint)
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
@@ -1530,13 +1524,13 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
- [ ] Projekt struktúra létrehozva
|
||||
- [ ] package.json konfigurálva (`"type": "module"`)
|
||||
- [ ] Függőségek telepítve
|
||||
- [ ] Domain layer: IUserRepository létrehozva
|
||||
- [ ] Infrastructure layer: UserRepository és user.json létrehozva
|
||||
- [ ] Application layer: Összes Query és Command létrehozva
|
||||
- [ ] Application layer: Összes Handler létrehozva
|
||||
- [ ] API layer: UserController létrehozva
|
||||
- [ ] API layer: userRouter létrehozva
|
||||
- [ ] API layer: server.js létrehozva és konfigurálva
|
||||
- [ ] Domain réteg: IUserRepository létrehozva
|
||||
- [ ] Infrastructure réteg: UserRepository és user.json létrehozva
|
||||
- [ ] Application réteg: Összes Query és Command létrehozva
|
||||
- [ ] Application réteg: Összes Handler létrehozva
|
||||
- [ ] API réteg: UserController létrehozva
|
||||
- [ ] API réteg: userRouter létrehozva
|
||||
- [ ] API réteg: server.js létrehozva és konfigurálva
|
||||
- [ ] Szerver elindul hiba nélkül
|
||||
- [ ] GET /users működik
|
||||
- [ ] POST /users működik és ment a JSON fájlba
|
||||
@@ -1565,6 +1559,6 @@ Ez a User Management rendszer egy jól strukturált, modern Node.js alkalmazás,
|
||||
**Nehézségi szint**: Közép-haladó
|
||||
|
||||
---
|
||||
|
||||
|
||||
**Dátum**: 2026. február 13.
|
||||
**Verzió**: 1.0
|
||||
|
||||
Reference in New Issue
Block a user