From fb880bf0e1bc1129133c663272e515038a28072b Mon Sep 17 00:00:00 2001 From: halilturkoglu Date: Sun, 12 Feb 2023 00:08:18 +0100 Subject: [PATCH 1/9] =?UTF-8?q?Export=20endpoint'i=20eklendi:=20-=20Mevcut?= =?UTF-8?q?=20bulunan=20modeller=20icin=20fileStream=20veya=20direkt=20csv?= =?UTF-8?q?=20dosya=20olarak=20indirme=20yapilabilmektedir.=20UTF-8=20dest?= =?UTF-8?q?e=C4=9Finin=20kontrole=20ihtiyac=C4=B1=20var.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Local docker-compose-local.yml eklendi: - Kullandığım bu şekli diğer insanlara yardımcı olabilir diye eklemek istecsrb. --- README.md | 18 ++- docker-compose-local.yml | 38 ++++++ routes/controllers/export.js | 248 +++++++++++++++++++++++++++++++++++ 3 files changed, 303 insertions(+), 1 deletion(-) create mode 100644 docker-compose-local.yml create mode 100644 routes/controllers/export.js diff --git a/README.md b/README.md index 129ec89..96d1ed7 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,23 @@ docker run -p 8080:8080 -d deprem-io-backend ### Docker ile ayağa kaldırma -```bash +docker-compose-local.yml dosyasinda mongodb ve redis icin 127.0.0.1 yonlendirmesi yapan versiyonlari bulunmaktadir. + +``` +docker-compose -f docker-compose-local.yml up --build +``` + +Containerlari ayağa kaldırdıktan sonra asağıdaki gibi localde calışan mongo ve redis +containerlarına uygulamayı bağlayabiliriz. + +```.env doyası +MONGOURL="mongodb://127.0.0.1:27017/app" +REDIS_URL="127.0.0.1:6379" +``` + +### Local docker-compose ile ayağa kaldırma + +``` make up ``` diff --git a/docker-compose-local.yml b/docker-compose-local.yml new file mode 100644 index 0000000..d7b20bc --- /dev/null +++ b/docker-compose-local.yml @@ -0,0 +1,38 @@ +version: '3.9' + +services: + app: + restart: always + build: . + ports: + - 8080:8080 + environment: + - MONGOURL=mongodb://mongodb:27017 + depends_on: + - mongodb + + mongodb: + restart: always + image: zcube/bitnami-compat-mongodb + environment: + - MONGO_INITDB_DATABASE=app + - MONGO_INITDB_ROOT_USERNAME=rootd + ports: + - "127.0.0.1:27017:27017" + volumes: + - mongodb_data:/bitnami/mongodb + + redis: + image: redis:6.2-alpine + restart: always + ports: + - '127.0.0.1:6379:6379' + command: redis-server --save 20 1 --loglevel warning + volumes: + - redis_data:/data + +volumes: + mongodb_data: + driver: local + redis_data: + driver: local diff --git a/routes/controllers/export.js b/routes/controllers/export.js new file mode 100644 index 0000000..e097bf5 --- /dev/null +++ b/routes/controllers/export.js @@ -0,0 +1,248 @@ +const check = new (require("../../lib/Check"))(); +const { checkConnection } = require("../utils"); +const Yardim = require("../../models/yardimModel"); +const YardimEt = require("../../models/yardimEtModel"); +const YardimKaydi = require("../../models/yardimKaydiModel"); +const Iletisim = require("../../models/iletisimModel"); + +module.exports = async function (fastifyInstance) { + fastifyInstance.get( + "/export", + { + schema: { + querystring: { + type: "object", + properties: { + veriTipi: { type: "string" }, + }, + required: ["veriTipi"], + }, + }, + }, + async function (req, res) { + let veriTipi = req.query.veriTipi; + if (!veriTipi) { + return { + error: "veriTipi queryParameter zorunludur.", + }; + } + + await checkConnection(fastifyInstance); + + res.raw.setHeader("Content-Type", "text/csv charset=utf-8"); + res.raw.setHeader("Content-Encoding", "utf-8"); + res.raw.setHeader( + "Content-Disposition", + `attachment; filename=${veriTipi} export ${Date.now()}.csv` + ); + + try { + return exportData(veriTipi); + } catch (e) { + res.statusCode = 500; + return { + error: "export sirasinda hata olustu.", + }; + } + + }, + ); + + fastifyInstance.get( + "/exportStream", + { + schema: { + querystring: { + type: "object", + properties: { + veriTipi: { type: "string" }, + }, + required: ["veriTipi"], + }, + }, + }, + async function (req, res) { + let veriTipi = req.query.veriTipi; + if (!veriTipi) { + return { + error: "veriTipi queryParameter zorunludur.", + }; + } + + await checkConnection(fastifyInstance); + + res.raw.setHeader("Content-Type", "text/csv charset=utf-8"); + res.raw.setHeader("Content-Encoding", "utf-8,%EF%BB%BF"); + res.raw.setHeader( + "Content-Disposition", + `attachment; filename=${veriTipi} export ${Date.now()}.csv` + ); + + try { + return exportData(veriTipi, res.raw); + } catch (e) { + res.statusCode = 500; + return { + error: "export sirasinda hata olustu.", + }; + } + + }, + ); + + fastifyInstance.post( + "/mailExport", + { + schema: { + body: { + type: "object", + properties: { + veriTipi: { type: "string" }, + mailler: { type: "array" }, + }, + required: ["veriTipi", "mailler"], + }, + }, + }, + async function (req, res) { + req.body = check.xssFilter(req.body); + await checkConnection(fastifyInstance); + + let veriTipi = req.body.veriTipi; + let mailler = req.body.mailler; + + if (!mailler || mailler.length === 0) { + res.statusCode = 400; + return { + error: "Lutfen mail belirtiniz.", + }; + } + + try { + let data = await exportData(veriTipi); + if (!data || data.length === 0) { + res.statusCode = 400; + return { + error: "export verisi bulunmamaktadir.", + }; + } + + res.raw.setHeader("Content-Type", "text/csv charset=utf-8"); + res.raw.setHeader("Content-Encoding", "utf-8,%EF%BB%BF"); + res.raw.setHeader( + "Content-Disposition", + `attachment; filename=${veriTipi} export ${Date.now()}.csv` + ); + + // Email gonder + console.log(data) + } catch (e) { + res.statusCode = 500; + return { + error: "exportu mail atarken hata olustu.", + }; + } + + }, + ); +}; + +async function exportData(veriTipi, io) { + let select; + let queryDoc; + + if (veriTipi === "YardimEt") { + select = "yardimTipi adSoyad telefon sehir hedefSehir aciklama fields createdAt updatedAt"; + queryDoc = YardimEt; + } else if (veriTipi === "Yardim") { + select = "yardimTipi adSoyad telefon email adres adresTarifi acilDurum kisiSayisi yardimDurumu fizikiDurum " + + "googleMapLink tweetLink fields createdAt updatedAt"; + queryDoc = Yardim; + } else if (veriTipi === "YardimKaydi") { + select = "yardimTipi adSoyad telefon sonDurum adres email aciklama createdAt updatedAt"; + queryDoc = YardimKaydi; + } else if (veriTipi === "Iletisim") { + select = "adSoyad email telefon mesaj createdAt updatedAt"; + queryDoc = Iletisim; + } else { + return ""; + } + + let data = await queryDoc.find({}) + .select(select) + .then(data => { + return data; + }) + + processData(data, io); + + if (io) { + io.end(); + } + return data; +} + +const header = (obj) => { + if (!obj) return ""; + let keys = []; + + for (let key of Object.keys(obj)) { + if (typeof (obj[key]) === "object") { + let headerName = header(obj[key]); + if (headerName && headerName.trim() !== "") { + keys.push(headerName); + } + } else { + if (key && key.trim() !== "") { + keys.push(key); + } + } + } + + return keys.length > 0 ? keys.join(", ") : ""; +}; + +const row = (obj) => { + if (!obj) return ""; + let values = []; + + for (let key of Object.keys(obj)) { + if (typeof (obj[key]) === "object") { + let value = row(obj[key]); + if (value) { + values.push(value); + } + } else { + let value = obj[key].replaceAll(",", " "); // separator keyword + if (value) { + values.push(value); + } + } + } + + return values.length > 0 ? values.join(", ") : ""; +}; + +const processData = (data, io) => { + if (!data || data.length === 0) { + return ""; + } + + let csvExportString = ""; + let headerString = header(data[0]._doc) + "\n"; + csvExportString += headerString; + + if (io) { + io.write(headerString); + } + + data.forEach(dataItem => { + let rowString = row(dataItem._doc) + "\n"; + if (io) { + io.write(rowString); + } + csvExportString += rowString; + }); + + return csvExportString; +} \ No newline at end of file From ff043a979833e4befbabeae1cac73739679d3302 Mon Sep 17 00:00:00 2001 From: halilturkoglu Date: Sun, 12 Feb 2023 01:30:14 +0100 Subject: [PATCH 2/9] mailExport endpoint'i eklendi: - ornek mailExport kullanimi READ.me'ye eklendics --- README.md | 34 ++++++++++++++++ config.js | 2 + package-lock.json | 71 ++++++++++++++++++++++++++++++++ package.json | 1 + routes/controllers/export.js | 79 ++++++++++++++++++++++++++++++------ 5 files changed, 174 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 96d1ed7..0149d48 100644 --- a/README.md +++ b/README.md @@ -142,6 +142,31 @@ localhost:8080/yardimet } ``` +## export (GET) + +Ilgili modelleri duz csv dosyasi olarak download eder + +``` +http://localhost:8080/export?veriTipi=YardimKaydi +``` + +## exportStream (GET) + +Ilgili modelleri stream csv dosyasi olarak download eder + +``` +http://localhost:8080/exportStream?veriTipi=YardimKaydi +``` + +## mailExport (POST) + +``` +{ +"veriTipi": "YardimKaydi", +"mailler": ["halilturkoglucs@gmail.com", "halil@turkoglu.name.tr"] +} +``` + ## Fields alanını kullanımı post olarak fields-{burası aalanı adı}: value şeklinde datayı gönderin onunları fields objesi altında birleştirip db ye kayddedecek @@ -159,6 +184,15 @@ fields: { Opsiyonel her türlü yardım isteme ve yardımEt kısmına eklenecek özellikler için fields alanını kullanın isteidğiniz gibi json objesi post edebilirsiniz +## Local Email Saglayici Ayari + +Export Mail ozelligi icin email saglayicinin API key degerini .env dosyasina girmeniz gerekmektedir. + +e.g. +```.env +EMAIL_PROVIDER_API_KEY="EXAMPLEAPIKEY" +``` + ## Cache i temizleme /cache/flushall diff --git a/config.js b/config.js index dbd424d..840f53b 100644 --- a/config.js +++ b/config.js @@ -4,4 +4,6 @@ module.exports = { port: parseInt(process.env.PORT, 10) || 8080, mongoUrl: process.env.MONGOURL || "", NODE_ENV: process.env.NODE_ENV || "development", + exportEmails: process.env.EXPORT_EMAILS || "halilturkoglucs@gmail.com", + emailProviderAPIKey: process.env.EMAIL_PROVIDER_API_KEY || "", }; diff --git a/package-lock.json b/package-lock.json index 3a6cfb3..2b2ba26 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@fastify/cors": "^8.2.0", "@fastify/swagger": "^8.3.1", "@fastify/swagger-ui": "^1.3.0", + "@sendgrid/mail": "^7.7.0", "dotenv": "^16.0.3", "fastify": "^4.13.0", "mongoose": "^6.9.1", @@ -1606,6 +1607,41 @@ "darwin" ] }, + "node_modules/@sendgrid/client": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-7.7.0.tgz", + "integrity": "sha512-SxH+y8jeAQSnDavrTD0uGDXYIIkFylCo+eDofVmZLQ0f862nnqbC3Vd1ej6b7Le7lboyzQF6F7Fodv02rYspuA==", + "dependencies": { + "@sendgrid/helpers": "^7.7.0", + "axios": "^0.26.0" + }, + "engines": { + "node": "6.* || 8.* || >=10.*" + } + }, + "node_modules/@sendgrid/helpers": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-7.7.0.tgz", + "integrity": "sha512-3AsAxfN3GDBcXoZ/y1mzAAbKzTtUZ5+ZrHOmWQ279AuaFXUNCh9bPnRpN504bgveTqoW+11IzPg3I0WVgDINpw==", + "dependencies": { + "deepmerge": "^4.2.2" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@sendgrid/mail": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-7.7.0.tgz", + "integrity": "sha512-5+nApPE9wINBvHSUxwOxkkQqM/IAAaBYoP9hw7WwgDNQPxraruVqHizeTitVtKGiqWCKm2mnjh4XGN3fvFLqaw==", + "dependencies": { + "@sendgrid/client": "^7.7.0", + "@sendgrid/helpers": "^7.7.0" + }, + "engines": { + "node": "6.* || 8.* || >=10.*" + } + }, "node_modules/@types/chai": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", @@ -1872,6 +1908,14 @@ "fastq": "^1.6.1" } }, + "node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -2239,6 +2283,14 @@ "node": ">=6" } }, + "node_modules/deepmerge": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -2498,6 +2550,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", diff --git a/package.json b/package.json index 984ec2b..8541710 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "@fastify/cors": "^8.2.0", "@fastify/swagger": "^8.3.1", "@fastify/swagger-ui": "^1.3.0", + "@sendgrid/mail": "^7.7.0", "dotenv": "^16.0.3", "fastify": "^4.13.0", "mongoose": "^6.9.1", diff --git a/routes/controllers/export.js b/routes/controllers/export.js index e097bf5..639d4a0 100644 --- a/routes/controllers/export.js +++ b/routes/controllers/export.js @@ -4,8 +4,17 @@ const Yardim = require("../../models/yardimModel"); const YardimEt = require("../../models/yardimEtModel"); const YardimKaydi = require("../../models/yardimKaydiModel"); const Iletisim = require("../../models/iletisimModel"); +const config = require('../../config'); +const sgMail = require("@sendgrid/mail"); +let emailProviderSetup = false; + +if (config.emailProviderAPIKey && config.emailProviderAPIKey !== "") { + emailProviderSetup = true; + sgMail.setApiKey(config.emailProviderAPIKey); +} module.exports = async function (fastifyInstance) { + fastifyInstance.get( "/export", { @@ -100,7 +109,7 @@ module.exports = async function (fastifyInstance) { veriTipi: { type: "string" }, mailler: { type: "array" }, }, - required: ["veriTipi", "mailler"], + required: ["veriTipi"], }, }, }, @@ -111,10 +120,11 @@ module.exports = async function (fastifyInstance) { let veriTipi = req.body.veriTipi; let mailler = req.body.mailler; + mailler = mailler || config.exportEmails; if (!mailler || mailler.length === 0) { res.statusCode = 400; return { - error: "Lutfen mail belirtiniz.", + error: "Lutfen exportun gonderilecegi mail adreslerini belirtiniz.", }; } @@ -127,26 +137,69 @@ module.exports = async function (fastifyInstance) { }; } - res.raw.setHeader("Content-Type", "text/csv charset=utf-8"); - res.raw.setHeader("Content-Encoding", "utf-8,%EF%BB%BF"); - res.raw.setHeader( - "Content-Disposition", - `attachment; filename=${veriTipi} export ${Date.now()}.csv` - ); - - // Email gonder - console.log(data) + if (emailProviderSetup) { + return await sendEmail(mailler, veriTipi, data, res) + } else { + res.statusCode = 500; + return { + error: "Email saglayici baglantisi henuz yapilmadi, email gonderilemiyor.", + }; + } } catch (e) { res.statusCode = 500; return { error: "exportu mail atarken hata olustu.", }; } - }, ); }; +function sendEmail(to, veriTipi, data, res) { + let multipleEmail = to.split(","); + if (multipleEmail.length > 0) { + to = multipleEmail; + } + + // Simdilik SendGrid free trier kullanabiliriz, ardindan istenilen saglayiciya gecilebilir + const msg = { + to: to, + from: 'depremiotest@gmail.com', + subject: 'deprem.io ' + veriTipi + ' Export', + html: 'deprem.io ciktilari ektedir.', + attachments: [ + { + content: Buffer.from(data).toString("base64"), + filename: veriTipi + " export " + Date.now() + ".csv", + type: "text/csv", + disposition: "attachment", + content_id: "depremio_csv" + } + ] + } + + return sgMail + .send(msg) + .then((response) => { + console.log(response[0].statusCode) + console.log(response[0].headers) + + return { + status: 'ok', + message: 'Email gonderme istegi basariyla alindi.', + } + }) + .catch((error) => { + console.error(error) + + res.status(500) + return { + status: 'error', + message: 'Email gonderirken hata olustu.' + } + }); +} + async function exportData(veriTipi, io) { let select; let queryDoc; @@ -174,7 +227,7 @@ async function exportData(veriTipi, io) { return data; }) - processData(data, io); + data = processData(data, io); if (io) { io.end(); From a4f00e2c42a295f1df466d87e81648ca8f76a7d9 Mon Sep 17 00:00:00 2001 From: halilturkoglu Date: Sun, 12 Feb 2023 01:42:07 +0100 Subject: [PATCH 3/9] READ.me fixcs --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0149d48..0e1aca2 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,12 @@ docker run -p 8080:8080 -d deprem-io-backend ### Docker ile ayağa kaldırma +``` +make up +``` + +### Local docker-compose ile ayağa kaldırma + docker-compose-local.yml dosyasinda mongodb ve redis icin 127.0.0.1 yonlendirmesi yapan versiyonlari bulunmaktadir. ``` @@ -49,11 +55,6 @@ MONGOURL="mongodb://127.0.0.1:27017/app" REDIS_URL="127.0.0.1:6379" ``` -### Local docker-compose ile ayağa kaldırma - -``` -make up -``` ## Postman Workspace From 96273a4cec16df428f31fa8adf3fea1f187c5913 Mon Sep 17 00:00:00 2001 From: halilturkoglu Date: Sun, 12 Feb 2023 01:42:44 +0100 Subject: [PATCH 4/9] READ.me fixcsr --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0e1aca2..14eb5d9 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ docker run -p 8080:8080 -d deprem-io-backend ### Docker ile ayağa kaldırma -``` +```bash make up ``` From a0602b60e4a8b46716a9a156ee97acc18788e964 Mon Sep 17 00:00:00 2001 From: halilturkoglu Date: Sun, 12 Feb 2023 01:43:44 +0100 Subject: [PATCH 5/9] Static email config.js --- config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.js b/config.js index 840f53b..1cf8a6d 100644 --- a/config.js +++ b/config.js @@ -4,6 +4,6 @@ module.exports = { port: parseInt(process.env.PORT, 10) || 8080, mongoUrl: process.env.MONGOURL || "", NODE_ENV: process.env.NODE_ENV || "development", - exportEmails: process.env.EXPORT_EMAILS || "halilturkoglucs@gmail.com", + exportEmails: process.env.EXPORT_EMAILS || "istenilenstaticemail@mail.com", emailProviderAPIKey: process.env.EMAIL_PROVIDER_API_KEY || "", }; From 885cce75b1e07a35ecbe33263a0315eb0bb0008a Mon Sep 17 00:00:00 2001 From: halilturkoglu Date: Sun, 12 Feb 2023 01:45:59 +0100 Subject: [PATCH 6/9] EXPORT_EMAILS READ.me aciklamasi eklendi --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 14eb5d9..11566f7 100644 --- a/README.md +++ b/README.md @@ -187,11 +187,14 @@ fields alanını kullanın isteidğiniz gibi json objesi post edebilirsiniz ## Local Email Saglayici Ayari -Export Mail ozelligi icin email saglayicinin API key degerini .env dosyasina girmeniz gerekmektedir. +Export E-Mail ozelligi icin email saglayicinin API key degerini .env dosyasina girmeniz gerekmektedir. + +Ayrica email atilmasi istediginiz hesaplari (coklu ise virgul ile ayirarak) asagidaki gibi tanimlayiniz. e.g. ```.env EMAIL_PROVIDER_API_KEY="EXAMPLEAPIKEY" +EXPORT_EMAILS="email@example.com" ``` ## Cache i temizleme From f5903cd9f97fc7507be9a3d9ef5b783d34b736cf Mon Sep 17 00:00:00 2001 From: halilturkoglu Date: Sun, 12 Feb 2023 02:06:58 +0100 Subject: [PATCH 7/9] gereksiz docker-compose-local.yml silindi --- docker-compose-local.yml | 38 -------------------------------------- package-lock.json | 18 +++++++++--------- 2 files changed, 9 insertions(+), 47 deletions(-) delete mode 100644 docker-compose-local.yml diff --git a/docker-compose-local.yml b/docker-compose-local.yml deleted file mode 100644 index d7b20bc..0000000 --- a/docker-compose-local.yml +++ /dev/null @@ -1,38 +0,0 @@ -version: '3.9' - -services: - app: - restart: always - build: . - ports: - - 8080:8080 - environment: - - MONGOURL=mongodb://mongodb:27017 - depends_on: - - mongodb - - mongodb: - restart: always - image: zcube/bitnami-compat-mongodb - environment: - - MONGO_INITDB_DATABASE=app - - MONGO_INITDB_ROOT_USERNAME=rootd - ports: - - "127.0.0.1:27017:27017" - volumes: - - mongodb_data:/bitnami/mongodb - - redis: - image: redis:6.2-alpine - restart: always - ports: - - '127.0.0.1:6379:6379' - command: redis-server --save 20 1 --loglevel warning - volumes: - - redis_data:/data - -volumes: - mongodb_data: - driver: local - redis_data: - driver: local diff --git a/package-lock.json b/package-lock.json index f30ad5b..7636895 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,8 +17,8 @@ "@fastify/swagger-ui": "^1.3.0", "@lavamoat/allow-scripts": "^2.3.0", "@lavamoat/preinstall-always-fail": "^1.0.0", - "abstract-cache-redis": "^2.0.0", "@sendgrid/mail": "^7.7.0", + "abstract-cache-redis": "^2.0.0", "dotenv": "^16.0.3", "fastify": "^4.13.0", "ioredis": "^5.3.0", @@ -1632,14 +1632,6 @@ "fastq": "^1.6.1" } }, - "node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dependencies": { - "follow-redirects": "^1.14.8" - } - }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -1653,6 +1645,14 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, + "node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "license": "MIT" From a24cf0f1b28803e816120599451966017519dfe9 Mon Sep 17 00:00:00 2001 From: halilturkoglu Date: Sun, 12 Feb 2023 02:14:56 +0100 Subject: [PATCH 8/9] Merges package-lock.json with mail dependenciesr --- package-lock.json | 71 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/package-lock.json b/package-lock.json index bd4974f..a5d5b00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "@fastify/swagger-ui": "^1.3.0", "@lavamoat/allow-scripts": "^2.3.0", "@lavamoat/preinstall-always-fail": "^1.0.0", + "@sendgrid/mail": "^7.7.0", "abstract-cache-redis": "^2.0.0", "dotenv": "^16.0.3", "fastify": "^4.13.0", @@ -1762,6 +1763,41 @@ "win32" ] }, + "node_modules/@sendgrid/client": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-7.7.0.tgz", + "integrity": "sha512-SxH+y8jeAQSnDavrTD0uGDXYIIkFylCo+eDofVmZLQ0f862nnqbC3Vd1ej6b7Le7lboyzQF6F7Fodv02rYspuA==", + "dependencies": { + "@sendgrid/helpers": "^7.7.0", + "axios": "^0.26.0" + }, + "engines": { + "node": "6.* || 8.* || >=10.*" + } + }, + "node_modules/@sendgrid/helpers": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-7.7.0.tgz", + "integrity": "sha512-3AsAxfN3GDBcXoZ/y1mzAAbKzTtUZ5+ZrHOmWQ279AuaFXUNCh9bPnRpN504bgveTqoW+11IzPg3I0WVgDINpw==", + "dependencies": { + "deepmerge": "^4.2.2" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@sendgrid/mail": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-7.7.0.tgz", + "integrity": "sha512-5+nApPE9wINBvHSUxwOxkkQqM/IAAaBYoP9hw7WwgDNQPxraruVqHizeTitVtKGiqWCKm2mnjh4XGN3fvFLqaw==", + "dependencies": { + "@sendgrid/client": "^7.7.0", + "@sendgrid/helpers": "^7.7.0" + }, + "engines": { + "node": "6.* || 8.* || >=10.*" + } + }, "node_modules/@types/chai": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", @@ -2144,6 +2180,14 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, + "node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -2644,6 +2688,14 @@ "node": ">=6" } }, + "node_modules/deepmerge": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -2944,6 +2996,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", From 7712a39340b1e9ae18acfb098665b966cdafae94 Mon Sep 17 00:00:00 2001 From: halilturkoglu Date: Sun, 12 Feb 2023 03:35:27 +0100 Subject: [PATCH 9/9] README.md duzenlemesicsr --- README.md | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/README.md b/README.md index 9ba47da..8af9936 100644 --- a/README.md +++ b/README.md @@ -45,23 +45,6 @@ docker run -p 8080:8080 -d deprem-io-backend make up ``` -### Local docker-compose ile ayağa kaldırma - -docker-compose-local.yml dosyasinda mongodb ve redis icin 127.0.0.1 yonlendirmesi yapan versiyonlari bulunmaktadir. - -``` -docker-compose -f docker-compose-local.yml up --build -``` - -Containerlari ayağa kaldırdıktan sonra asağıdaki gibi localde calışan mongo ve redis -containerlarına uygulamayı bağlayabiliriz. - -```.env doyası -MONGOURL="mongodb://127.0.0.1:27017/app" -REDIS_URL="127.0.0.1:6379" -``` - - ## Postman Workspace https://www.postman.com/minikdev/workspace/depremio