fix(anaylitics): unique values were missing causing a weird crash
This commit is contained in:
@@ -4,13 +4,16 @@ import {
|
||||
pgTable,
|
||||
text,
|
||||
timestamp,
|
||||
unique,
|
||||
uuid,
|
||||
} from "drizzle-orm/pg-core";
|
||||
|
||||
export const analyticsDaily = pgTable("analytics_daily", {
|
||||
export const analyticsDaily = pgTable(
|
||||
"analytics_daily",
|
||||
{
|
||||
id: uuid("id").defaultRandom().primaryKey(),
|
||||
|
||||
businessDate: date("business_date").notNull(),
|
||||
businessDate: date("business_date", { mode: "string" }).notNull(),
|
||||
|
||||
method: text("method").notNull(),
|
||||
routePattern: text("route_pattern").notNull(),
|
||||
@@ -30,4 +33,13 @@ export const analyticsDaily = pgTable("analytics_daily", {
|
||||
|
||||
createdAt: timestamp("created_at").defaultNow().notNull(),
|
||||
updatedAt: timestamp("updated_at").defaultNow().notNull(),
|
||||
});
|
||||
},
|
||||
(table) => [
|
||||
unique("analytics_daily_business_route_unique").on(
|
||||
table.businessDate,
|
||||
table.method,
|
||||
table.routePattern,
|
||||
table.module,
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
@@ -61,7 +61,7 @@ export async function aggregateRouteHitsForBusinessDay() {
|
||||
|
||||
const rows = await db
|
||||
.select({
|
||||
businessDate: sql<string>`${businessDate}`,
|
||||
businessDate: sql<string>`CAST(${businessDate} AS date)`,
|
||||
method: analytics.method,
|
||||
routePattern: analytics.routePattern,
|
||||
module: sql<string>`COALESCE(${analytics.module}, 'unknown')`,
|
||||
@@ -105,9 +105,16 @@ export async function aggregateRouteHitsForBusinessDay() {
|
||||
};
|
||||
}
|
||||
|
||||
const values = rows.map((row) => ({
|
||||
...row,
|
||||
businessDate: row.businessDate,
|
||||
firstHitAt: new Date(row.firstHitAt),
|
||||
lastHitAt: new Date(row.lastHitAt),
|
||||
}));
|
||||
|
||||
await db
|
||||
.insert(analyticsDaily)
|
||||
.values(rows)
|
||||
.values(values)
|
||||
.onConflictDoUpdate({
|
||||
target: [
|
||||
analyticsDaily.businessDate,
|
||||
|
||||
Reference in New Issue
Block a user