import type { DrizzleClient } from '@/server/db/client';
import type { LoadCtx } from '@/server/page-layout/types';
import { listSubscribedClubsByUser } from '@/server/db/queries/club';
import type { Config } from './config';
import { captureCaught } from '@/server/observability/capture.server';

export interface ClubStoriesData {
  clubs: { id: string; name: string; logoUrl: string | null }[];
}

export async function loadData(
  db: DrizzleClient,
  _config: Config,
  ctx: LoadCtx,
): Promise<ClubStoriesData> {
  if (!ctx.userId) return { clubs: [] };

  try {
    const vendors = await listSubscribedClubsByUser(db, ctx.userId, 20);
    return {
      clubs: vendors.map((v) => ({
        id: v.id,
        name: v.displayName,
        logoUrl: v.logoUrl ?? null,
      })),
    };
  } catch (err) {
    captureCaught(err, {
      scope: 'server.page-layout.modules.club-stories.loadData',
      severity: 'warning',
    });
    return { clubs: [] };
  }
}
