Merge branch 'addREADME' into 'main'
completing readme See merge request v3/service/ad!5
This commit is contained in:
		
						commit
						452ecdae73
					
				
							
								
								
									
										118
									
								
								README.md
								
								
								
								
							
							
						
						
									
										118
									
								
								README.md
								
								
								
								
							| 
						 | 
				
			
			@ -9,3 +9,121 @@ You need [Docker](https://docs.docker.com/engine/) and its [compose](https://doc
 | 
			
		|||
You also need NodeJS installed locally : we **strongly** advise to install [Node Version Manager](https://github.com/nvm-sh/nvm) and use the latest LTS version of Node (check that your local version matches with the one used in the Dockerfile).
 | 
			
		||||
 | 
			
		||||
The API will run inside a docker container, **but** the install itself is made outside the container, because during development we need tools that need to be available locally (eg. ESLint or Prettier with fix-on-save).
 | 
			
		||||
 | 
			
		||||
A RabbitMQ instance is also required to send / receive messages when data has been inserted/updated/deleted.
 | 
			
		||||
 | 
			
		||||
## Installation
 | 
			
		||||
 | 
			
		||||
-   copy `.env.dist` to `.env` :
 | 
			
		||||
 | 
			
		||||
    ```bash
 | 
			
		||||
    cp .env.dist .env
 | 
			
		||||
    ```
 | 
			
		||||
 | 
			
		||||
    Modify it if needed.
 | 
			
		||||
 | 
			
		||||
-   install the dependencies :
 | 
			
		||||
 | 
			
		||||
    ```bash
 | 
			
		||||
    npm install
 | 
			
		||||
    ```
 | 
			
		||||
 | 
			
		||||
-   start the containers :
 | 
			
		||||
 | 
			
		||||
    ```bash
 | 
			
		||||
    docker compose up -d
 | 
			
		||||
    ```
 | 
			
		||||
 | 
			
		||||
    The app runs automatically on port **5006**.
 | 
			
		||||
 | 
			
		||||
## Database migration
 | 
			
		||||
 | 
			
		||||
Before using the app, you need to launch the database migration (it will be launched inside the container) :
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
npm run migrate
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Usage
 | 
			
		||||
 | 
			
		||||
The app exposes the following [gRPC](https://grpc.io/) services :
 | 
			
		||||
 | 
			
		||||
-   **FindByUuid** : find an ad by its uuid
 | 
			
		||||
 | 
			
		||||
    ```json
 | 
			
		||||
    {
 | 
			
		||||
        "uuid": "80126a61-d128-4f96-afdb-92e33c75a3e1"
 | 
			
		||||
    }
 | 
			
		||||
    ```
 | 
			
		||||
 | 
			
		||||
-   **Create** : create an ad (note that uuid is optional, a uuid will be automatically attributed if it is not provided)
 | 
			
		||||
 | 
			
		||||
    ```json
 | 
			
		||||
    {
 | 
			
		||||
        "userUuid": "113e0000-0000-4000-a000-000000000000",
 | 
			
		||||
        "driver": true,
 | 
			
		||||
        "passenger": false,
 | 
			
		||||
        "frequency": "PUNCTUAL",
 | 
			
		||||
        "departure": "2023-01-15",
 | 
			
		||||
        "toDate": "2023-08-01",
 | 
			
		||||
 | 
			
		||||
        "marginDurations": {
 | 
			
		||||
            "mon": 800
 | 
			
		||||
        },
 | 
			
		||||
        "seatsPassenger": 0,
 | 
			
		||||
        "seatsDriver": 3,
 | 
			
		||||
        "addresses": [
 | 
			
		||||
            {
 | 
			
		||||
                "lon": 48.68944505415954,
 | 
			
		||||
                "lat": 6.176510296462267,
 | 
			
		||||
                "houseNumber": "5",
 | 
			
		||||
                "street": "Avenue Foch",
 | 
			
		||||
                "locality": "Nancy",
 | 
			
		||||
                "postalCode": "54000",
 | 
			
		||||
                "country": "France"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "lon": 48.8566,
 | 
			
		||||
                "lat": 2.3522,
 | 
			
		||||
                "locality": "Paris",
 | 
			
		||||
                "postalCode": "75000",
 | 
			
		||||
                "country": "France"
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    }
 | 
			
		||||
    ```
 | 
			
		||||
 | 
			
		||||
## Messages
 | 
			
		||||
 | 
			
		||||
As mentionned earlier, RabbitMQ messages are sent after these events :
 | 
			
		||||
 | 
			
		||||
-   **Create** (message : the created ad informations)
 | 
			
		||||
 | 
			
		||||
## Tests / ESLint / Prettier
 | 
			
		||||
 | 
			
		||||
Tests are run outside the container for ease of use (switching between different environments inside containers using prisma is complicated and error prone).
 | 
			
		||||
The integration tests use a dedicated database (see _db-test_ section of _docker-compose.yml_).
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
# run all tests (unit + integration)
 | 
			
		||||
npm run test
 | 
			
		||||
 | 
			
		||||
# unit tests only
 | 
			
		||||
npm run test:unit
 | 
			
		||||
 | 
			
		||||
# integration tests only
 | 
			
		||||
npm run test:integration
 | 
			
		||||
 | 
			
		||||
# coverage
 | 
			
		||||
npm run test:cov
 | 
			
		||||
 | 
			
		||||
# ESLint
 | 
			
		||||
npm run lint
 | 
			
		||||
 | 
			
		||||
# Prettier
 | 
			
		||||
npm run pretty
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## License
 | 
			
		||||
 | 
			
		||||
Mobicoop V3 - Ad Service is [AGPL licensed](LICENSE).
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue