Witaj, mamo.
Taksówka sunęła po mokrym od jesiennego deszczu asfalcie. Starszy kierowca, powoli prowadząc tyle razy przemierzane ulice miasta, zerknął w lusterko na swoich pasażerów.
Młoda kobieta trzymała na rękach niemowlę, może półroczne. Niepokoił go adres, który podali – dom dziecka.
Rodzice dziecka wyglądali na szczęśliwą parę: on – wysoki, postawny wojskowy w mundurze porucznika sił powietrznych, ona… Po prostu piękna kobieta o błękitnych oczach i jasnych włosach rozsypanych na ramionach.
— Krzysiu, kwiaty! — przypomniała, zwracając się do wojskowego.
— Pamiętam, Aniu, pamiętam — odparł i poprosił kierowcę: — Ojcze, zatrzymaj się przy kwiaciarni.
Wojskowy wysiadł i, nie zważając na wiatr, ruszył do sklepu. Kierowca śledził go wzrokiem i zapytał:
— Mąż?
— Mąż — uśmiechnęła się radośnie, poprawiając czapeczkę na główce dziecka.
— Dziecko piękne, wy też wyglądacie na porządnych ludzi. To czemu do domu dziecka? — w głosie kierowcy brzmiało wyrzut.
Młoda mama nie zrozumiała pytania, ale gdy pojęła jego ukryty sens, oczy jej się rozszerzyły, a z ust wybiegł tylko szept:
— Boże… Co pan sobie pomyślał?..
— No tak… różnie bywa. — Spojrzał na nią już łagodniej. — To czemu jednak tam jedziecie?
— Tam dorastałam. Siedem lat, potem mnie adoptowano. A mój Krzysiek — cztery lata spędził w tym samym miejscu.
— U pani Haliny Nowak? — szeroki uśmiech rozjaśnił twarz kierowcy. — A to ci historia! I od razu z pociągu do niej? To prawdziwi z was ludzie!
— Zna ją pan? — kobieta spojrzała na niego z zaciekawieniem.
— A kto jej nie zna!
Kierowca już miał zacząć długą opowieść, gdy drzwi taksówki się otworzyły, a do wnętrza wdarł się zapach róż trzymanych przez wojskowego.
— Ania, zobacz, jakie cuda mamy w naszym mieście! — mężczyzna uśmiechał się dumnie.
— Krysiu! — zachwyciła się Anna. — choćby mi takich róż nie dawałeś!
— Nie gniewaj się, Aniu — tłumaczył się Krzysztof. — Prz# create-entity-service
To generate an entity service, you need to specify: Application name, API name, and Entity name.
# Example
“`bash
npx @herbsjs/herbs-cli create-entity-service
“`
The CLI will prompt you for the required information as Application name, API name, and Entity name.
After running the command, you should see the following output:
“`bash
Application name: todolist
? API name: list
? Entity name: item
Creating entity…
Creating use cases…
Creating repository…
Creating controller…
Creating routes…
Entity service created!
“`
# Files Structure
The following files will be created:
“`bash
.
└── src
├── domain
│ ├── entities
│ │ └── item.js
│ ├── repositories
│ │ └── itemRepository.js
│ └── usecases
│ ├── createItem.js
│ ├── deleteItem.js
│ ├── findItem.js
│ ├── updateItem.js
│ └── validateItem.js
└── main
└── api
├── controllers
│ └── item
│ ├── createItem.js
│ ├── deleteItem.js
│ ├── findItem.js
│ └── updateItem.js
└── routes
└── item.js
“`
# Running
To run the service, follow these steps:
Edit the file `index.js` with the following content:
“`javascript
const { herbarium } = require(‘@herbsjs/herbarium’)
const { MongoDB } = require(‘@herbsjs/herbs-mongodb’)
const connection = require(‘./connection’)
const Item = require(‘./src/domain/entities/item’)
const itemRepository = require(‘./src/domain/repositories/itemRepository’)
const createItem = require(‘./src/domain/usecases/createItem’)
const deleteItem = require(‘./src/domain/usecases/deleteItem’)
const findItem = require(‘./src/domain/usecases/findItem’)
const updateItem = require(‘./src/domain/usecases/updateItem’)
const dependency = {
Item,
itemRepository
}
const mongo = new MongoDB(connection)
const create = createItem(dependency)
const update = updateItem(dependency)
const find = findItem(dependency)
const del = deleteItem(dependency)
herbarium.usecases
.add(create, ‘createItem’)
.add(update, ‘updateItem’)
.add(find, ‘findItem’)
.add(del, ‘deleteItem’)
async function start() {
await mongo.initialize()
const controller = require(‘./src/main/api/controllers/item’)
const server = require(‘./src/main/api/routes’)
server.listen(3000, () => console.log(‘Server running on port 3000’))
}
start()
“`
Install the necessary dependencies:
“`bash
npm install @herbsjs/herbarium @herbsjs/herbs-mongodb express express-validator mongo
“`
Create the `connection.js` file with the MongoDB connection configuration:
“`javascript
require(‘dotenv’).config()
module.exports = {
uri: process.env.MONGO_URI,
options: {
useNewUrlParser: true,
useUnifiedTopology: true,
dbName: ‘todolist’
}
}
“`
Create the `.env` file with the MongoDB URI:
“`bash
MONGO_URI=mongodb://localhost:27017/
“`
Create a MongoDB database named `todolist` and a collection named `items`.
Run the service:
“`bash
node index.js
“`
The service will be running on port 3000.
# Testing
You can test the service using Postman or any other API testing tool.
## POST /item
– Body:
“`json
{
“description”: “buy milk”,
“isDone”: false
}
“`
## GET /item
– Params:
“`json
{
“id”: “5f1f9d9f9d9f9d9f9d9f9d9”
}
“`
## PUT /item
– Params:
“`json
{
“id”: “5f1f9d9f9d9f9d9f9d9f9d9”
}
“`
– Body:
“`json
{
“description”: “buy milk”,
“isDone”: true
}
“`
## DELETE /item
– Params:
“`json
{
“id”: “5f1f9d9f9d9f9d9f9d9f9d9”
}
“`