/**
 * GET /api/auth/memberships — app-shell (Task 6).
 *
 * Returns the caller's active tenant memberships, joined across
 * tenant_memberships + tenants + roles.
 * Frozen / pending-approval memberships are excluded server-side.
 *
 * Auth: zync_session cookie (behind authMiddleware, mounted on the protected
 * sub-router in auth/index.ts).
 */
import { Hono } from 'hono'
import type { AppEnv } from '../../types'
import { createDb, getUserActiveMemberships } from '@zync/db/queries'
import type { UserId } from '@zync/types'

export const membershipsRoute = new Hono<AppEnv>()

membershipsRoute.get('/memberships', async (c) => {
  const session = c.get('session')
  if (!session || session.type !== 'user') {
    return c.json({ error: 'Unauthorized' }, 401)
  }

  const db = createDb(c.env)
  const memberships = await getUserActiveMemberships(db, session.sub as UserId)

  return c.json(memberships)
})
