dropy-project / back

5 stars 0 forks source link
javascript nodejs prisma typescript

Dropy backend :

Préconditions :

Installation :

Lancer en développement :

Lancer en production :

Effectuer une migration :

Si le chema de la BD doit être modifié

Deployer en production

Ajouter une route à la doc

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é",
            },
        }
    }
},

Variables d'environnement :

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=""

#################