Node ^16
Docker
Setup le fichier .env
Installer les dépendances : npm i
A la racine du projet toujours, lancer : npm run prisma:generate
Lancer la BD locale via : sudo docker-compose up postgres
Lancer le serveur node (API) : npm run dev
Vérifier le .env
Build les conteneurs docker : docker-compose build
Lancer docker-compose : docker-compose up -d
Push la bd dans le conteneur postgres :
docker exec -it api /bin/bash
npx prisma db push
Si le chema de la BD doit être modifié
En production
docker-compose up -d
docker exec -it <nom_conteneur_api> /bin/bash
npx prisma migrate deploy
En développement
docker-compose up postgres
npx prisma migrate dev
npx prisma migrate deploy
version.json
Dans le fichier src/resources/swagger/routesDoc.json
Exemple route avec paramètre URL :
Si c'est des paramètres d'URL sont nécessaire on les note de cette façon :
Dans le tableau "parameters" on peut retrouver des paramètres de "path" : ceux de l'URL. Mais aussi des paramètres "header", comme l'Authorization
"dropy/{id}" : {
"get": {
"tags": [
"API - Dropy"
],
"description": "Une route qui donne les infos du dropy qui correspond à l'id";
"parameters": [
{
"name": "id",
"in": "path",
"description": "L'id du dropy",
"required": true,
"schema": {
"type": "integer"
}
},
{
"name": "Authorization",
"in": "header",
"description": "Le token d'accés de l'utilisateur",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Les infos du drop",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DropyAroundSimplifiedUser"
}
}
}
},
"404": {
"description": "Aucun drop avec l'id donné n'est présent dans la base de donnée"
}
}
}
},
Exemple route avec body
On rajoute un objet "requestBody"
"user/changePassword" : {
"post": {
"tags": [
"API - User"
],
"description": "Une route qui change le mot de passe du user connecté";
"parameters": [
{
"name": "Authorization",
"in": "header",
"description": "Le token d'accés de l'utilisateur",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"description": "Le nouveau mot de passe",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"password": {
"type": "string"
}
}
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Mot de passe modifié",
},
}
}
},
NODE_ENV=development
#################
API_PORT=3000
SOCKET_PORT=4000
CONTENT_PORT=6000
STUDIO_PORT=5555
POSTGRES_EXPOSE_PORTS=127.0.0.1:5432:5432
# En developpement = 127.0.0.1:5432:5432 (Exposition sur la machine de développement)
# En production = 5432 (Port restreint au réseau virtuel du docker compose)
#################
# Dans le cas ou le projet est lancé à 100% au travers de docker-compose, remplacer localhost par content
CONTENT_URL_LOCAL=http://localhost:${CONTENT_PORT}
CONTENT_URL_PUBLIC=http://localhost:${CONTENT_PORT}
#################
ACCESS_SECRET_KEY=""
REFRESH_SECRET_KEY=""
RESET_PASSWORD_SECRET_KEY=""
CHAT_ENCRYPTION_SECRET_KEY=""
#################-> POSTGRES
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=postgres
DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@localhost:5432/${POSTGRES_DB}"
#################-> NOTIFICATIONS
APN_KEYID=
APN_TEAMID=
FCM_KEY=
#################-> MAIL
MAIL_ADDRESS=
MAIL_PASSWORD=
#################-> WEBHOOKS
# Que pour la prod
DISCORD_WEBHOOK_ERROR=""
#################