import type { Expense, User } from "@prisma/client"; import type { LinksFunction, LoaderFunction } from "remix"; import { Link, Outlet, useLoaderData, Form, redirect } from "remix"; import { db } from "~/utils/db.server"; import { getUser } from "~/utils/session.server"; export const links: LinksFunction = () => { return []; }; type LoaderData = { user: User | null; expenseListItems: Array; }; export const loader: LoaderFunction = async ({ request }) => { const user = await getUser(request); if (!user) { redirect("/login"); } const expenseListItems = await db.expense.findMany({ take: 25, orderBy: { createdAt: "desc" }, }); const data: LoaderData = { expenseListItems, user, }; return data; }; export default function ExpensesRoute() { const data = useLoaderData(); return (

Expenses

{data.user ? (
{`Hi ${data.user.username}`}
) : ( Login )}

Last expenses:

    {data.expenseListItems.map((exp) => (
  • {exp.amount}€ - {exp.description}
  • ))}
); }