Added cacht tags

This commit is contained in:
2025-06-27 19:05:34 +02:00
parent 38293531e9
commit 18c6aa1758
2 changed files with 49 additions and 15 deletions

View File

@@ -1,5 +1,9 @@
import type { NextConfig } from "next"; import type { NextConfig } from "next";
const nextConfig: NextConfig = {}; const nextConfig: NextConfig = {
experimental: {
useCache: true
}
};
export default nextConfig; export default nextConfig;

View File

@@ -1,9 +1,15 @@
import { eq, desc, count } from "drizzle-orm"; import { eq, desc, count } from "drizzle-orm";
import { db } from "../drizzle/db"; import { db } from "../drizzle/db";
import { urls, visits } from "../drizzle/schema"; import { urls, visits } from "../drizzle/schema";
import { cacheTag } from "next/dist/server/use-cache/cache-tag";
import { revalidateTag } from "next/cache";
export function getAllUrls() { export async function getAllUrls() {
return db.query.urls.findMany({ "use cache"
cacheTag("urls")
return await db.query.urls.findMany({
orderBy: desc(urls.createdAt), orderBy: desc(urls.createdAt),
with: { with: {
visits: true visits: true
@@ -11,28 +17,52 @@ export function getAllUrls() {
}) })
} }
export function getUrlBySlug(slug: string) { export async function getUrlBySlug(slug: string) {
return db.query.urls.findFirst({ "use cache"
cacheTag("urls")
return await db.query.urls.findFirst({
where: eq(urls.slug, slug) where: eq(urls.slug, slug)
}) })
} }
export function getVisitsBySlugById(id: string) { export async function insertUrl(data: typeof urls.$inferInsert) {
return db.select({ count: count() }).from(visits).where(eq(visits.urlId, id)) "use cache"
revalidateTag("url")
return await db.insert(urls).values(data)
} }
export function insertUrl(data: typeof urls.$inferInsert) { export async function updateUrl(id: string, data: Omit<Partial<typeof urls.$inferInsert>, "id">) {
return db.insert(urls).values(data) "use cache"
revalidateTag("url")
return await db.update(urls).set(data).where(eq(urls.id, id))
} }
export function updateUrl(id: string, data: Omit<Partial<typeof urls.$inferInsert>, "id">) { export async function deleteUrl(id: string) {
return db.update(urls).set(data).where(eq(urls.id, id)) "use cache"
revalidateTag("url")
return await db.delete(urls).where(eq(urls.id, id))
} }
export function deleteUrl(id: string) { export async function getVisitsBySlugById(id: string) {
return db.delete(urls).where(eq(urls.id, id)) "use cache"
cacheTag("visits")
return await db.select({ count: count() }).from(visits).where(eq(visits.urlId, id))
} }
export function trackVisit(data: typeof visits.$inferInsert) { export async function trackVisit(data: typeof visits.$inferInsert) {
return db.insert(visits).values(data) "use cache"
revalidateTag("visits")
return await db.insert(visits).values(data)
} }