chore: commit all changes
This commit is contained in:
48
lib/server/repos/insights.ts
Normal file
48
lib/server/repos/insights.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import { desc, eq } from 'drizzle-orm';
|
||||
import type { PortfolioInsight } from '@/lib/types';
|
||||
import { db } from '@/lib/server/db';
|
||||
import { portfolioInsight } from '@/lib/server/db/schema';
|
||||
|
||||
type InsightRow = typeof portfolioInsight.$inferSelect;
|
||||
|
||||
function toInsight(row: InsightRow): PortfolioInsight {
|
||||
return {
|
||||
id: row.id,
|
||||
user_id: row.user_id,
|
||||
provider: row.provider,
|
||||
model: row.model,
|
||||
content: row.content,
|
||||
created_at: row.created_at
|
||||
};
|
||||
}
|
||||
|
||||
export async function createPortfolioInsight(input: {
|
||||
userId: string;
|
||||
provider: string;
|
||||
model: string;
|
||||
content: string;
|
||||
}) {
|
||||
const [created] = await db
|
||||
.insert(portfolioInsight)
|
||||
.values({
|
||||
user_id: input.userId,
|
||||
provider: input.provider,
|
||||
model: input.model,
|
||||
content: input.content,
|
||||
created_at: new Date().toISOString()
|
||||
})
|
||||
.returning();
|
||||
|
||||
return toInsight(created);
|
||||
}
|
||||
|
||||
export async function getLatestPortfolioInsight(userId: string) {
|
||||
const [row] = await db
|
||||
.select()
|
||||
.from(portfolioInsight)
|
||||
.where(eq(portfolioInsight.user_id, userId))
|
||||
.orderBy(desc(portfolioInsight.created_at))
|
||||
.limit(1);
|
||||
|
||||
return row ? toInsight(row) : null;
|
||||
}
|
||||
Reference in New Issue
Block a user