a fun bot for the hc slack

feat: add lastUpdated field

dunkirk.sh feb03e20 1c8afe47

verified
Changed files
+15 -2
src
features
api
routes
libs
+12 -2
src/features/api/routes/projects.ts
···
userName?: string;
/** Total number of takes */
takesCount: number;
+
lastUpdated: Date;
+
createdAt: Date;
};
// Project cache to reduce database queries
···
totalTakesTime: number;
userId: string;
takesCount: number;
+
lastUpdated: string;
+
createdAt: string;
}[];
if (user) {
···
totalTakesTime: usersTable.totalTakesTime,
userId: usersTable.id,
takesCount: count(takesTable.id).as("takes_count"),
+
lastUpdated: usersTable.lastTakeUploadDate,
+
createdAt: usersTable.createdAt,
})
.from(usersTable)
.leftJoin(takesTable, eq(usersTable.id, takesTable.userId))
···
totalTakesTime: usersTable.totalTakesTime,
userId: usersTable.id,
takesCount: count(takesTable.id).as("takes_count"),
+
lastUpdated: usersTable.lastTakeUploadDate,
+
createdAt: usersTable.createdAt,
})
.from(usersTable)
.leftJoin(takesTable, eq(usersTable.id, takesTable.userId))
···
userNameMap[id] = userNames[index] || "Unknown User";
});
-
// Add user names to projects
+
// Add user names to projects and convert lastUpdated to number
const projectsWithUserNames = projectsWithCounts.map((project) => ({
...project,
userName: userNameMap[project.userId] || "Unknown User",
-
}));
+
lastUpdated: new Date(project.lastUpdated),
+
createdAt: new Date(project.createdAt),
+
})) as Project[];
// Store in cache
const result = user ? projectsWithUserNames[0] : projectsWithUserNames;
+3
src/libs/schema.ts
···
.default(TakesConfig.START_DATE.toISOString()),
repoLink: text("repo_link"),
demoLink: text("demo_link"),
+
createdAt: text("created_at")
+
.$defaultFn(() => new Date().toISOString())
+
.notNull(),
});
export async function setupTriggers(pool: Pool) {