---
import BaseLayout from "@/layouts/BaseLayout.astro";
import { getDatabase, schema } from "@/db";
import { desc, eq } from "drizzle-orm";
import { FileText, Plus, Trash2, Edit2, Star } from "lucide-react";
const user = Astro.locals.user;
if (!user) {
return Astro.redirect("/login");
}
const db = getDatabase();
const repoId = Astro.url.searchParams.get("repo") || "";
let repositories: { id: string; name: string; fullName?: string; owner: string }[] = [];
try {
const repos = await db.query.repositories.findMany({
where: eq(schema.repositories.ownerId, user.id),
columns: { id: true, name: true },
with: { owner: { columns: { username: true } } },
});
repositories = repos.map((r) => ({
id: r.id,
name: r.name,
owner: r.owner.username,
fullName: `${r.owner.username}/${r.name}`,
}));
} catch (e) {}
const selectedRepo = repositories.find((repo) => repo.id === repoId) || null;
interface ReviewTemplate {
id: string;
name: string;
description?: string | null;
category?: string | null;
content: string;
isDefault: boolean;
createdAt: string | Date;
}
let templates: ReviewTemplate[] = [];
try {
if (repoId) {
const dbTemplates = await db.query.reviewTemplates.findMany({
where: eq(schema.reviewTemplates.repositoryId, repoId),
orderBy: [desc(schema.reviewTemplates.createdAt)],
});
templates = dbTemplates as ReviewTemplate[];
}
} catch (e) {}
---
Create reusable checklists for code reviews Choose a repository to manage review templates Create your first reusable review checklist {template.description}
{template.content.slice(0, 200)}{template.content.length > 200 ? "..." : ""}
Review Templates
Select a Repository
No Templates Yet