Compare commits

..

No commits in common. "75e5a95348929e1e485f9641b6a839095ec91207" and "bb601d3c82c52b4bf8714895625a88f28407d968" have entirely different histories.

9 changed files with 32 additions and 41 deletions

Binary file not shown.

View File

@ -1,24 +1,27 @@
import { PrismaClient } from "@prisma/client";
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient();
const prisma = new PrismaClient()
async function main() {
// ... you will write your Prisma Client queries here
const story = await prisma.story.update({
where: { id: 1 },
data: {
title: "Ghost Aliens of Mars",
genres: { set: [{ id: 1 }, { id: 2 }], create: { name: "alien-punk" } },
},
});
// ... you will write your Prisma Client queries here
const story = await prisma.story.update({
where: { id: 1 },
data: {
title: "Ghost Aliens of Mars",
genres: { set: [{ id: 1 }, { id: 2 }], create: { name: "alien-punk" } }
}
})
console.log(story)
}
main()
.then(async () => {
await prisma.$disconnect();
})
.catch(async (e) => {
console.error(e);
await prisma.$disconnect();
process.exit(1);
});
.then(async () => {
await prisma.$disconnect()
})
.catch(async (e) => {
console.error(e)
await prisma.$disconnect()
process.exit(1)
})

View File

@ -15,6 +15,7 @@ const dynamic = 'force-dynamic'
//POST endpoint
export async function POST(request: NextRequest) {
const body = await request.json()
console.log(`body: ${JSON.stringify(body)}`)
const { email, password } = body
if (!email || !password) {

View File

@ -1,12 +1,16 @@
"use server"
import { Pub, Story, Sub } from "@prisma/client"
import { Genre, Pub, Story, Sub } from "@prisma/client"
import prisma from "./db"
import { revalidatePath } from "next/cache"
import { redirect } from "next/navigation"
import { z } from "zod"
import { storySchema } from "app/ui/forms/schemas"
import { pubSchema } from "app/ui/forms/schemas"
import { subSchema } from "app/ui/forms/schemas"
import { prepGenreData, prepStoryData } from "./validate"
import { SubForm } from "app/ui/forms/sub"
//TODO - data validation, error handling, unauthorized access handling
export async function createStory({ story, genres }: { story: Story, genres: number[] }): Promise<{ success: string }> {
// will return undefined if middleware authorization fails

View File

@ -1,14 +0,0 @@
import { Genre } from "@prisma/client";
import { FilterFn, Row } from "@tanstack/react-table";
export const genrePickerFilterFn = (row: Row<any>, columnId: string, filterValue: any) => {
const genres: Genre[] = row.getValue(columnId)
for (let index = 0; index < genres.length; index++) {
if (genres[genres.length - 1].name.includes(filterValue)) {
return true
}
}
return false
}

View File

@ -18,6 +18,7 @@ export default function LoginForm() {
const router = useRouter()
const searchParams = useSearchParams()
const redirect = searchParams.get("from") ?? "/submission"
console.log(redirect)
const form = useForm<z.infer<typeof loginSchema>>({
resolver: zodResolver(loginSchema),
})
@ -36,7 +37,6 @@ export default function LoginForm() {
toast({ title: "login successful!" })
setSubmitted(true)
await revalidate(redirect)
//BUG:the first time user logs in, page refreshes instead of redirecting
router.push(redirect)
} else {
toast({ title: "login failed!" })

View File

@ -8,7 +8,6 @@ import { selectCol } from "app/ui/tables/selectColumn"
import NumberInputCell from "app/ui/tables/inputs/numberInput"
import { pubSchema } from "app/ui/forms/schemas"
import GenrePickerInputCell from "app/ui/tables/inputs/genrePickerInput"
import { genrePickerFilterFn } from "app/lib/filterFns"
const columnHelper = createColumnHelper<PubWithGenres>()
@ -67,10 +66,10 @@ export const columns: ColumnDef<PubWithGenres>[] = [
</div>
),
cell: GenrePickerInputCell,
filterFn: genrePickerFilterFn
filterFn: "arrIncludes"
//TODO - write custom filter function, to account for an array of objects
}),
{
accessorKey: "query_after_days",
header: () => (
@ -79,7 +78,6 @@ export const columns: ColumnDef<PubWithGenres>[] = [
<span className="sm:hidden"><Clock /></span>
</div>
),
enableColumnFilter: false,
cell: cell => (
<>
{/* @ts-ignore */}

View File

@ -8,7 +8,6 @@ import NumberInputCell from "app/ui/tables/inputs/numberInput"
import { storySchema } from "app/ui/forms/schemas"
import { TextInputCell } from "app/ui/tables/inputs/textInput"
import GenrePickerInputCell from "app/ui/tables/inputs/genrePickerInput"
import { genrePickerFilterFn } from "app/lib/filterFns"
const columnHelper = createColumnHelper<StoryWithGenres>()
export const columns: ColumnDef<StoryWithGenres>[] = [
@ -79,7 +78,7 @@ export const columns: ColumnDef<StoryWithGenres>[] = [
</div>
),
cell: GenrePickerInputCell,
filterFn: genrePickerFilterFn,
filterFn: "arrIncludes",
meta: {}
}),

View File

@ -136,7 +136,7 @@ export function DataTable<TData, TValue>({
<div className="flex gap-2">
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="outline" className="hidden sm:block ml-auto">
<Button variant="outline" className="hidden md:display-blockml-auto">
Filter by
</Button>
</DropdownMenuTrigger>