/**
 * MyPurchasesDataLoader - server-side data loader for the My Purchases page.
 *
 * Called from the Astro page to pre-populate the query client for hydration.
 */

import type { DrizzleClient } from '@/server/db/client.js';
import * as purchaseQueries from '@/server/db/queries/purchases.js';

export interface LoadedPurchasesData {
  active: purchaseQueries.EnrichedPurchase[];
  history: purchaseQueries.EnrichedPurchase[];
  totalSavings: number;
  businessCount: number;
}

/**
 * Load purchases for a user by userId.
 */
export async function loadMyPurchases(
  db: DrizzleClient,
  userId: string,
): Promise<LoadedPurchasesData> {
  const result = await purchaseQueries.listByUser(db, userId);
  return {
    active: result.active,
    history: result.history,
    totalSavings: parseFloat(result.stats.totalSavings),
    businessCount: result.stats.businessCount,
  };
}
