Compare commits

..

2 Commits

Author SHA1 Message Date
andrzej 4aa7194427 enable row selection 2024-06-27 16:08:14 +02:00
andrzej f163de99c8 add multi delete function 2024-06-27 16:08:03 +02:00
3 changed files with 24 additions and 25 deletions

Binary file not shown.

View File

@ -3,34 +3,30 @@ import { revalidatePath } from "next/cache";
import prisma from "./db"; import prisma from "./db";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
const tableMap = {
"/story": "story",
"/publication": "pub",
"/submission": "sub"
}
export async function deleteRecord(id: number, pathname: "/story" | "/publication" | "/submission") { export async function deleteRecord(id: number, pathname: "/story" | "/publication" | "/submission") {
let res = {} const table = tableMap[pathname]
switch (pathname) { const res = await prisma[table].delete({ where: { id } })
case "/story": console.log(`deleted from ${table}: ${res.id}`)
res = await prisma.story.delete({
where: { id }
})
console.log(`deleted: ${res}`)
break;
case "/publication":
res = await prisma.pub.delete({
where: { id }
})
console.log(`deleted: ${res}`)
break;
case "/submission":
res = await prisma.sub.delete({
where: { id }
})
console.log(`deleted: ${res}`)
break;
default:
break;
}
console.log("revalidating: " + pathname) console.log("revalidating: " + pathname)
revalidatePath(pathname) revalidatePath(pathname)
redirect(pathname) redirect(pathname)
} }
export async function deleteRecords(ids: number[], pathname: "/story" | "/publication" | "/submission") {
const table = tableMap[pathname]
ids.forEach(async (id) => {
const res = await prisma.story.delete({
where: { id }
})
console.log(`deleted from ${table}: ${res.id}`)
})
}

View File

@ -26,7 +26,7 @@ import {
getFilteredRowModel, getFilteredRowModel,
getCoreRowModel, getCoreRowModel,
getPaginationRowModel, getPaginationRowModel,
useReactTable, useReactTable
} from "@tanstack/react-table" } from "@tanstack/react-table"
import { import {
@ -63,6 +63,8 @@ export function DataTable<TData, TValue>({
const table = useReactTable({ const table = useReactTable({
data, data,
columns, columns,
enableRowSelection: true,
enableMultiRowSelection: true,
getCoreRowModel: getCoreRowModel(), getCoreRowModel: getCoreRowModel(),
getPaginationRowModel: getPaginationRowModel(), getPaginationRowModel: getPaginationRowModel(),
onSortingChange: setSorting, onSortingChange: setSorting,
@ -74,7 +76,7 @@ export function DataTable<TData, TValue>({
sorting, sorting,
columnFilters, columnFilters,
columnVisibility, columnVisibility,
}, }
}) })
const pathname = usePathname() const pathname = usePathname()
const [filterBy, setFilterBy] = useState(table.getAllColumns()[0]) const [filterBy, setFilterBy] = useState(table.getAllColumns()[0])
@ -174,6 +176,7 @@ export function DataTable<TData, TValue>({
key={row.id} key={row.id}
data-state={row.getIsSelected() && "selected"} data-state={row.getIsSelected() && "selected"}
tabIndex={0} tabIndex={0}
onClick={() => row.toggleSelected()}
> >
{row.getVisibleCells().map((cell) => ( {row.getVisibleCells().map((cell) => (
<TableCell key={cell.id}> <TableCell key={cell.id}>