Files
linker/src/lib/db/urls.ts
2025-06-26 23:31:51 +02:00

38 lines
1021 B
TypeScript

import { eq, desc, count } from "drizzle-orm";
import { db } from "../drizzle/db";
import { urls, visits } from "../drizzle/schema";
export function getAllUrls() {
return db.query.urls.findMany({
orderBy: desc(urls.createdAt),
with: {
visits: true
}
})
}
export function getUrlBySlug(slug: string) {
return db.query.urls.findFirst({
where: eq(urls.slug, slug)
})
}
export function getVisitsBySlugById(id: string) {
return db.select({ count: count() }).from(visits).where(eq(visits.urlId, id))
}
export function insertUrl(data: typeof urls.$inferInsert) {
return db.insert(urls).values(data)
}
export function updateUrl(id: string, data: Omit<Partial<typeof urls.$inferInsert>, "id">) {
return db.update(urls).set(data).where(eq(urls.id, id))
}
export function deleteUrl(id: string) {
return db.delete(urls).where(eq(urls.id, id))
}
export function trackVisit(data: typeof visits.$inferInsert) {
return db.insert(visits).values(data)
}