import { Router, type IRouter } from "express";
import { db, usersTable, membershipsTable, assetsTable } from "@workspace/db";
import { eq } from "drizzle-orm";
import { requireAuth } from "../middlewares/auth";

const router: IRouter = Router();

router.get("/network/members", requireAuth, async (req, res): Promise<void> => {
  const users = await db.select({
    user: usersTable,
    tier: membershipsTable.tier,
  }).from(usersTable)
    .leftJoin(membershipsTable, eq(usersTable.id, membershipsTable.userId))
    .limit(50);

  res.json(users.map(({ user, tier }) => ({
    id: user.id,
    name: user.name,
    avatarUrl: user.avatarUrl,
    isOnline: user.isOnline,
    membershipTier: tier ?? "free",
    joinedAt: user.createdAt,
  })));
});

router.get("/assets", requireAuth, async (_req, res): Promise<void> => {
  const assets = await db.select().from(assetsTable).orderBy(assetsTable.createdAt);
  res.json(assets.map(a => ({
    id: a.id, title: a.title, description: a.description,
    category: a.category, url: a.url, iconName: a.iconName,
  })));
});

export default router;
