From a66f4827e8c579e5a55adea74951b861d882fce5 Mon Sep 17 00:00:00 2001 From: Yashvardhan Arora Date: Wed, 29 May 2024 01:53:10 +0530 Subject: [PATCH] Add auto-server-restart after error, paste webhook payload log --- server/src/api/routes/plan.ts | 35 +++++++++++++++++++++++++++++++++++ server/src/app.ts | 8 -------- server/src/server.ts | 31 ++++++++++++++++++++++++++----- 3 files changed, 61 insertions(+), 13 deletions(-) diff --git a/server/src/api/routes/plan.ts b/server/src/api/routes/plan.ts index b0e8493..b265c1c 100644 --- a/server/src/api/routes/plan.ts +++ b/server/src/api/routes/plan.ts @@ -107,6 +107,41 @@ router.post("/webhook", (req: Request, res: Response) => { if (req.body.event === "subscription.charged") { const subscriptionEntity = req.body.payload.subscription.entity; console.log({ ...subscriptionEntity }); + + // log: + // { + // id: 'sub_OG2chJoM9DRdum', + // entity: 'subscription', + // plan_id: 'plan_OEj5fUJpj4yfEs', + // customer_id: 'cust_OG1uBmOH673KZI', + // status: 'active', + // current_start: 1716927176, + // current_end: 1719599400, + // ended_at: null, + // quantity: 1, + // notes: { + // ownerID: '664bb289832407580571bf7b', + // domainID: '663be1d6162c5e1e2fa35985', + // planLabel: 'hbd1.663be1d6162c5e1e2fa35985', + // planType: 'vercel' + // }, + // charge_at: 1719599400, + // start_at: 1716927176, + // end_at: 1745865000, + // auth_attempts: 0, + // total_count: 12, + // paid_count: 1, + // customer_notify: true, + // created_at: 1716927160, + // expire_by: null, + // short_url: null, + // has_scheduled_changes: false, + // change_scheduled_at: null, + // source: 'api', + // payment_method: 'card', + // offer_id: null, + // remaining_count: 11 + // } } res.status(200).send("ok"); }); diff --git a/server/src/app.ts b/server/src/app.ts index 43b01a2..ad843f0 100644 --- a/server/src/app.ts +++ b/server/src/app.ts @@ -21,14 +21,6 @@ import { } from "./api/routes"; import { CustomError } from "./utils/types"; -mongoose - .connect( - `mongodb+srv://${process.env.MONGODB_USERNAME}:${process.env.MONGODB_PASSWD}@${process.env.MONGODB_CLUSTER}.mongodb.net/?retryWrites=true&w=majority` - ) - .then(() => { - console.log("Connected to database 🚀"); - }); - const app = express(); app.use(morgan("dev")); // middleware for logging requests diff --git a/server/src/server.ts b/server/src/server.ts index e0587e0..8935b2d 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -5,13 +5,34 @@ import http from "http"; import app from "./app"; import dotenv from "dotenv"; +import mongoose, { set } from "mongoose"; dotenv.config(); - const port = Number(process.env.PORT) || 5000; - const server = http.createServer(app); -server.listen(port, "0.0.0.0", 100, () => { - console.log(`Server running on port ${port}`); -}); +async function startServer() { + try { + await mongoose + .connect( + `mongodb+srv://${process.env.MONGODB_USERNAME}:${process.env.MONGODB_PASSWD}@${process.env.MONGODB_CLUSTER}.mongodb.net/?retryWrites=true&w=majority` + ) + .then(() => { + console.log("Connected to database 🚀"); + }); + + server.listen(port, "0.0.0.0", 100, () => { + console.log(`Server running on port ${port}`); + }); + } catch (err) { + console.log(err); + setTimeout(startServer, 1500); + } + + mongoose.connection.on("error", (err) => { + console.error("MongoDB Error", err); + process.exit(1); + }); +} + +startServer();