import * as trpcExpress from "@trpc/server/adapters/express"; import cors from "cors"; import express, { Request } from "express"; import { cert, initializeApp } from "firebase-admin/app"; import { getFirestore } from "firebase-admin/firestore"; import { customAlphabet } from "nanoid"; import { getDB, mongoConnect } from "./config/mongo"; import { Post } from "./dto/Post"; import { appRouter, createContext } from "./handler/createRouter"; import { createTags } from "./migration/createTags"; import { migrateUsersData } from "./migration/migrateUsersData"; export * from "./handler/createRouter"; initializeApp({ credential: cert({ projectId: process.env.XPLORA_PROJECT_ID_STAGING, clientEmail: process.env.XPLORA_CLIENT_EMAIL_STAGING, privateKey: process.env.XPLORA_PRIVATE_KEY_STAGING?.replace(/\\n/g, "\n"), }), storageBucket: "xplora-staging.appspot.com", }); export const db = getFirestore(); const app = express(); app.use(express.json()); app.use( "/trpc", trpcExpress.createExpressMiddleware({ router: appRouter, createContext, }) ); app.use(cors()); const nanoid = customAlphabet("1234567890abcdefghijkLMNOPQRStuvwxyz", 20); app.post("/migrateUsersData", migrateUsersData); app.post("/createTags", createTags); app.post("/createPosts", async (req: Request<{}, {}, Post>, res) => { return await mongoConnect().then(async (client) => { const posts: Post = { countries: req.body.countries, createdAt: req.body.createdAt, description: req.body.description, _id: nanoid(), title: req.body.title, tags: req.body.tags, postLikesCount: req.body.postLikesCount, userId: req.body.userId, priorityCount: req.body.priorityCount, postCommentsCount: req.body.postCommentsCount, }; return getDB(client) .collection("posts") .insertOne(posts, (err, result) => { if (err) { res.status(400).json({ status: 400, message: err.message, }); } else { res.status(200).json({ status: 200, data: posts }); } }); }); }); app.get("/getAllPosts", async (req, res) => { return await mongoConnect().then(async (client) => { return getDB(client) .collection("posts") .find({ _id: "SaOczc61yxau41QStw0v" }) .toArray((err, result) => { if (err) { res.status(400).json({ status: 400, message: err.message, }); } else { res.status(200).json({ status: 200, data: result }); } }); }); }); app.put("/updatePosts/:id", async (req, res) => { return await mongoConnect().then(async (client) => { return getDB(client) .collection("posts") .updateOne( { _id: "SaOczc61yxau41QStw0v" }, { $set: { title: "hello Deji" } }, { upsert: true, }, (err, result) => { if (err) { console.log(err); res.status(400).json({ status: 400, message: err.message, }); } else { res.status(200).json({ status: 200, data: result }); } } ); }); }); const port = 9001; app.listen(port, () => console.log("server running on", port));