// Node.js + PostgreSQL + Redis Event Engine
// =============================================
importexpressfrom”express”;
import { Pool } from”pg”;
importRedisfrom”ioredis”;
import { v4asuuidv4 } from”uuid”;
constapp = express();
app.use(express.json());
// =============================================
// 🗄️ DATABASE (PostgreSQL)
// =============================================
constdb = newPool({
connectionString: process.env.DATABASE_URL
});
// =============================================
// ⚡ EVENT QUEUE (Redis)
// =============================================
constredis = newRedis(process.env.REDIS_URL);
// =============================================
// 🧠 EVENT TYPES
// =============================================
constEVENTS = {
USER_REGISTERED: “USER_REGISTERED”,
INVITE_ADDED: “INVITE_ADDED”,
INVITE_MILESTONE: “INVITE_MILESTONE”,
VIP_UPGRADED: “VIP_UPGRADED”
};
// =============================================
// 👤 REGISTER USER
// =============================================
app.post(“/register”, async (req, res) => {
const { name, phone, referral_code } = req.body;
constuserId = uuidv4();
constmyCode = Math.random().toString(36).substring(2, 8);
awaitdb.query(
`INSERT INTO users (id, name, phone, referral_code, referred_by)
VALUES ($1, $2, $3, $4, $5)`
, [userId, name, phone, myCode, referral_code || null]);
// Trigger event
awaitredis.lpush(“events”, JSON.stringify({
type: EVENTS.USER_REGISTERED,
userId
}));
res.json({ userId, referral_code: myCode });
});
// =============================================
// 🔗 TRACK INVITE
// =============================================
app.post(“/invite”, async (req, res) => {
const { referrerId, invitedUserId } = req.body;
awaitdb.query(
`INSERT INTO referrals (id, referrer_id, referred_user_id)
VALUES ($1, $2, $3)`
, [uuidv4(), referrerId, invitedUserId]);
constresult = awaitdb.query(
`SELECT COUNT(*) FROM referrals WHERE referrer_id = $1`
, [referrerId]);
constcount = parseInt(result.rows[0].count);
// Trigger milestone
awaitredis.lpush(“events”, JSON.stringify({
type: EVENTS.INVITE_ADDED,
referrerId,
count
}));
if (count === 5) {
awaitredis.lpush(“events”, JSON.stringify({
type: EVENTS.INVITE_MILESTONE,
referrerId