import { defaultQuery } from "~/v3/querySchemas"; import { BasePresenter } from "./basePresenter.server"; import type { QueryScope } from "~/services/queryService.server"; export type QueryHistoryItem = { id: string; query: string; scope: QueryScope; createdAt: Date; userName: string | null; /** AI-generated title summarizing the query */ title: string | null; /** Time filter settings */ filterPeriod: string | null; filterFrom: Date | null; filterTo: Date | null; }; export class QueryPresenter extends BasePresenter { public async call({ organizationId }: { organizationId: string }) { const history = await this._replica.customerQuery.findMany({ where: { organizationId }, orderBy: { createdAt: "desc" }, take: 20, select: { id: true, query: true, scope: true, title: true, createdAt: true, filterPeriod: true, filterFrom: true, filterTo: true, user: { select: { name: true, displayName: true }, }, }, }); return { defaultQuery, history: history.map( (q): QueryHistoryItem => ({ id: q.id, query: q.query, scope: q.scope.toLowerCase() as QueryScope, createdAt: q.createdAt, userName: q.user?.displayName ?? q.user?.name ?? null, title: q.title, filterPeriod: q.filterPeriod, filterFrom: q.filterFrom, filterTo: q.filterTo, }) ), }; } }