diff --git a/.env b/.env index 105b65f..5b76bdc 100644 --- a/.env +++ b/.env @@ -1,2 +1,4 @@ MYSQL_ROOT_PASSWORD=root -API_PORT=7777 \ No newline at end of file +API_PORT=7777 + +# DATABASE_URL="mysql://root:root@localhost:3306/snippetsmanager" \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 7b744e2..b0549ed 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,10 +4,11 @@ WORKDIR /app COPY package.json ./ COPY package-lock.json ./ +COPY tsconfig.json ./ COPY .env ./ -COPY app.js ./ -ADD routes ./routes/ +ADD src ./src/ ADD prisma ./prisma/ -RUN npm ci -CMD ["npm", "run", "start"] \ No newline at end of file +RUN npm ci +RUN npx prisma generate +CMD npm start \ No newline at end of file diff --git a/README.MD b/README.MD index cf5ff8e..20c3fad 100644 --- a/README.MD +++ b/README.MD @@ -4,6 +4,7 @@ - API_PORT - MYSQL_ROOT_PASSWORD +- DATABASE_URL `not needed when docker` ## Usage diff --git a/docker-compose.yml b/docker-compose.yml index a3be9a2..e52c5fe 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,8 +5,8 @@ services: - .env networks: - back-net - ports: - - 3306:3306 + # ports: + # - 3306:3306 environment: - "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" - "MYSQL_DATABASE=snippetsmanager" @@ -30,7 +30,7 @@ services: networks: - back-net ports: - - "${API_PORT}:3000" + - "${API_PORT}:${API_PORT}" networks: back-net: diff --git a/package-lock.json b/package-lock.json index 3193bec..753395b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@prisma/client": "^4.9.0", "concurrently": "^7.6.0", + "dotenv": "^16.0.3", "express": "^4.18.2", "nodemon": "^2.0.20", "prisma": "^4.9.0", @@ -18,6 +19,7 @@ }, "devDependencies": { "@babel/preset-typescript": "^7.18.6", + "@types/express": "^4.17.16", "install": "^0.13.0", "jest": "^29.4.0", "npm": "^9.4.0", @@ -1271,6 +1273,48 @@ "@babel/types": "^7.3.0" } }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.16", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.16.tgz", + "integrity": "sha512-LkKpqRZ7zqXJuvoELakaFYuETHjZkSol8EV6cNnyishutDBCCdv6+dsKPbKkCcIk57qRphOLY5sEgClw1bO3gA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.31", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.33", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", + "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, "node_modules/@types/graceful-fs": { "version": "4.1.6", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", @@ -1304,6 +1348,12 @@ "@types/istanbul-lib-report": "*" } }, + "node_modules/@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true + }, "node_modules/@types/node": { "version": "18.11.18", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", @@ -1316,6 +1366,28 @@ "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dev": true, + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, "node_modules/@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -1974,6 +2046,14 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "engines": { + "node": ">=12" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", diff --git a/package.json b/package.json index 30dbc54..a23e59c 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "dependencies": { "@prisma/client": "^4.9.0", "concurrently": "^7.6.0", + "dotenv": "^16.0.3", "express": "^4.18.2", "nodemon": "^2.0.20", "prisma": "^4.9.0", @@ -22,6 +23,7 @@ }, "devDependencies": { "@babel/preset-typescript": "^7.18.6", + "@types/express": "^4.17.16", "install": "^0.13.0", "jest": "^29.4.0", "npm": "^9.4.0", diff --git a/src/app.ts b/src/app.ts index 5999cbc..41c1ae5 100644 --- a/src/app.ts +++ b/src/app.ts @@ -1 +1,18 @@ -console.log('pouet]') +import { PrismaClient } from '@prisma/client' +import express from 'express' +import * as dotenv from 'dotenv' + +dotenv.config() + +const app = express() +const prisma = new PrismaClient() +const port = process.env.API_PORT + +app.use(express.json()) +app.use(express.urlencoded({ extended: false })) + +app.get('/v1/', async (req, res, next) => { + res.send({ code: 200, message: "SnippetsManager v1.0" }) +}) + +app.listen(port, () => console.log(`Listening on port ${port}`)) \ No newline at end of file