style: clean up code formatting and remove trailing whitespace

refactor: reorganize imports and fix type imports
This commit is contained in:
Evandro Fonseca Junior committed 2025-11-11 03:08:36 -03:00
1 parent d3704602fd
commit 47c04de6fe
232 files changed
+7140 -4798

No files matched your search

+35 -36
View File
@@ -3,8 +3,8 @@
* Migrado de lib/db/queries/telemetry.ts
*/
import { prisma } from "../app";
import { Prisma } from "@prisma/client";
import { prisma } from "../app";
export type TelemetryEventType =
| "ad_view"
@@ -102,7 +102,7 @@ export interface MarketplaceStats {
* Registra um evento de telemetria
*/
export async function trackEvent(
data: TrackEventData
data: TrackEventData,
): Promise<TelemetryEvent> {
const event = await prisma.telemetryEvent.create({
data: {
@@ -123,28 +123,26 @@ export async function trackEvent(
* Registra múltiplos eventos em batch
*/
export async function trackEventsBatch(
events: TrackEventData[]
events: TrackEventData[],
): Promise<TelemetryEvent[]> {
if (events.length === 0) return [];
const eventsResult = await prisma.$transaction(
async (tx) => {
return await Promise.all(
events.map((event) =>
tx.telemetryEvent.create({
data: {
event_type: event.event_type as TelemetryEventType,
ad_id: event.ad_id || null,
user_id: event.user_id || null,
session_id: event.session_id || null,
metadata: event.metadata || {},
},
})
)
);
}
);
return eventsResult.map(event => ({
const eventsResult = await prisma.$transaction(async (tx) => {
return await Promise.all(
events.map((event) =>
tx.telemetryEvent.create({
data: {
event_type: event.event_type as TelemetryEventType,
ad_id: event.ad_id || null,
user_id: event.user_id || null,
session_id: event.session_id || null,
metadata: event.metadata || {},
},
}),
),
);
});
return eventsResult.map((event) => ({
...event,
event_type: event.event_type as TelemetryEventType,
}));
@@ -153,7 +151,9 @@ export async function trackEventsBatch(
/**
* Busca analytics de um anúncio específico
*/
export async function getAdAnalytics(adId: number): Promise<AdAnalytics | null> {
export async function getAdAnalytics(
adId: number,
): Promise<AdAnalytics | null> {
const analytics = await prisma.adAnalytics.findUnique({
where: { ad_id: adId },
});
@@ -173,7 +173,7 @@ export async function getAdAnalytics(adId: number): Promise<AdAnalytics | null>
export async function getUserBehavior(
userId: number,
startDate?: Date,
endDate?: Date
endDate?: Date,
): Promise<UserBehavior | null> {
// Verificar se usuário existe
const user = await prisma.user.findUnique({
@@ -278,7 +278,7 @@ export async function getUserBehavior(
`;
// Buscar item_id dos anúncios visualizados
const itemIds = await prisma.$queryRaw<Array<{ item_id: number }>>`
const _itemIds = await prisma.$queryRaw<Array<{ item_id: number }>>`
SELECT DISTINCT l.item_id
FROM telemetry_events te
JOIN listings l ON l.listing_id = te.ad_id
@@ -295,7 +295,7 @@ export async function getUserBehavior(
.filter((q): q is string => !!q),
filters_applied: filterEvents.reduce(
(acc, r) => ({ ...acc, ...(r.metadata as any) }),
{} as Record<string, any>
{} as Record<string, any>,
),
items_viewed: viewEvents.map((r) => ({
item_id: r.ad_id!,
@@ -320,11 +320,12 @@ export async function getUserBehavior(
*/
export async function getMarketplaceStats(
startDate?: Date,
endDate?: Date
endDate?: Date,
): Promise<MarketplaceStats> {
const dateFilter = startDate && endDate
? Prisma.sql`WHERE timestamp BETWEEN ${startDate} AND ${endDate}`
: Prisma.empty;
const dateFilter =
startDate && endDate
? Prisma.sql`WHERE timestamp BETWEEN ${startDate} AND ${endDate}`
: Prisma.empty;
// Total de transações
const transactionsResult = await prisma.$queryRaw<Array<{ count: bigint }>>`
@@ -366,7 +367,8 @@ export async function getMarketplaceStats(
const viewsCount = Number(viewsResult[0]?.count || 0);
const purchasesCount = Number(purchasesResult[0]?.count || 0);
const conversion_rate = viewsCount > 0 ? (purchasesCount / viewsCount) * 100 : 0;
const conversion_rate =
viewsCount > 0 ? (purchasesCount / viewsCount) * 100 : 0;
// Itens mais procurados
const mostSearchedResult = await prisma.$queryRaw<
@@ -415,9 +417,7 @@ export async function getMarketplaceStats(
`;
// Tempo médio para venda
const avgTimeResult = await prisma.$queryRaw<
Array<{ avg_hours: string }>
>`
const avgTimeResult = await prisma.$queryRaw<Array<{ avg_hours: string }>>`
SELECT AVG(aa.time_to_sell)::TEXT as avg_hours
FROM ad_analytics aa
WHERE aa.time_to_sell IS NOT NULL
@@ -430,7 +430,7 @@ export async function getMarketplaceStats(
acc[r.item_name] = parseFloat(r.avg_price);
return acc;
},
{} as Record<string, number>
{} as Record<string, number>,
),
conversion_rate,
most_searched_items: mostSearchedResult.map((r) => ({
@@ -458,7 +458,7 @@ export async function getMarketplaceStats(
export async function aggregateHourlyMetrics(): Promise<void> {
// Usar $queryRaw para queries complexas de agregação
// Por enquanto, manter a lógica original mas adaptada para Prisma
// Agregar impressões
await prisma.$executeRaw`
INSERT INTO ad_analytics (ad_id, impressions, last_updated)
@@ -617,4 +617,3 @@ export async function aggregateHourlyMetrics(): Promise<void> {
AND l.sold_at >= NOW() - INTERVAL '1 hour'
`;
}