feat(dados-client): adotar react query em leituras do app

This commit is contained in:
Felipe Coutinho
2026-04-03 18:10:34 +00:00
parent e4c6a91350
commit acaf9d5c27
14 changed files with 409 additions and 150 deletions

View File

@@ -0,0 +1,49 @@
import { and, eq } from "drizzle-orm";
import { z } from "zod";
import { savedInsights } from "@/db/schema";
import { db } from "@/shared/lib/db";
import {
type InsightsResponse,
InsightsResponseSchema,
} from "@/shared/lib/schemas/insights";
export const savedInsightsPeriodSchema = z
.string()
.regex(/^\d{4}-\d{2}$/, "Período inválido (formato esperado: YYYY-MM)");
export type SavedInsightsRecord = {
insights: InsightsResponse;
modelId: string;
createdAt: string;
};
export async function fetchSavedInsights(
userId: string,
period: string,
): Promise<SavedInsightsRecord | null> {
const validatedPeriod = savedInsightsPeriodSchema.parse(period);
const result = await db
.select()
.from(savedInsights)
.where(
and(
eq(savedInsights.userId, userId),
eq(savedInsights.period, validatedPeriod),
),
)
.limit(1);
if (result.length === 0) {
return null;
}
const saved = result[0];
const insights = InsightsResponseSchema.parse(JSON.parse(saved.data));
return {
insights,
modelId: saved.modelId,
createdAt: saved.createdAt.toISOString(),
};
}