import { router, protectedProcedure } from "../_core/trpc.ts";
import { z } from "zod";
import {
  getPlayerStats,
  getPlayerGameSessions,
  getPlayerSessionsByDateRange,
} from "../services/gameStatsService.ts";

export const gameStatsRouter = router({
  getPlayerStats: protectedProcedure.query(async ({ ctx }) => {
    const stats = await getPlayerStats(ctx.user.id);
    return stats;
  }),

  getGameSessions: protectedProcedure
    .input(
      z.object({
        limit: z.number().default(50),
        offset: z.number().default(0),
      })
    )
    .query(async ({ ctx, input }) => {
      const sessions = await getPlayerGameSessions(
        ctx.user.id,
        input.limit,
        input.offset
      );
      return sessions;
    }),

  getSessionsByDateRange: protectedProcedure
    .input(
      z.object({
        startDate: z.date(),
        endDate: z.date(),
      })
    )
    .query(async ({ ctx, input }) => {
      const sessions = await getPlayerSessionsByDateRange(
        ctx.user.id,
        input.startDate,
        input.endDate
      );
      return sessions;
    }),
});
