async function getLastViewedItems<Table extends (typeof articlesViews | typeof casesViews)>(table: Table, idColumn: any, userId: string)
{
const distinctViewsSubquery = db
.select({
createdAt: sql`MAX(${table.createdAt})`.as("maxCreatedAt"),
itemId: table[idColumn],
})
.from(table)
.where(eq(table.userId, userId))
.groupBy(table[idColumn])
.as("distinct_views");
const views = await db
.select({
itemId: distinctViewsSubquery.itemId,
})
.from(distinctViewsSubquery)
.orderBy(desc(distinctViewsSubquery.createdAt))
.limit(3);
return views;
}
async function getLastViewedItems<Table extends (typeof articlesViews | typeof casesViews)>(table: Table, idColumn: any, userId: string)
{
const distinctViewsSubquery = db
.select({
createdAt: sql`MAX(${table.createdAt})`.as("maxCreatedAt"),
itemId: table[idColumn],
})
.from(table)
.where(eq(table.userId, userId))
.groupBy(table[idColumn])
.as("distinct_views");
const views = await db
.select({
itemId: distinctViewsSubquery.itemId,
})
.from(distinctViewsSubquery)
.orderBy(desc(distinctViewsSubquery.createdAt))
.limit(3);
return views;
}