edit submission, fix client side data validation
This commit is contained in:
parent
6ee4128c85
commit
0fa28a46eb
BIN
prisma/dev.db
BIN
prisma/dev.db
Binary file not shown.
|
@ -0,0 +1,15 @@
|
|||
"use server"
|
||||
import prisma from "./db"
|
||||
import { revalidatePath } from "next/cache"
|
||||
import { redirect } from "next/navigation"
|
||||
import { SubForm } from "app/ui/forms/sub"
|
||||
|
||||
export async function editSubmission(data: SubForm) {
|
||||
const res = await prisma.sub.update({
|
||||
where: { id: data.id },
|
||||
data
|
||||
})
|
||||
console.log(`updated ${data} to ${res}`)
|
||||
revalidatePath("/submission")
|
||||
redirect("/submission")
|
||||
}
|
|
@ -4,19 +4,11 @@ import { Dialog, DialogHeader, DialogTrigger, DialogContent, DialogClose, Dialog
|
|||
import { Button } from "@/components/ui/button";
|
||||
import { ComponentProps } from "react";
|
||||
import { Pub, Response, Story } from "@prisma/client";
|
||||
import SubmissionForm from "app/ui/forms/sub";
|
||||
import SubmissionForm, { SubForm } from "app/ui/forms/sub";
|
||||
|
||||
|
||||
type CreateSubDefaults = {
|
||||
subId?: number,
|
||||
storyId: number,
|
||||
pubId: number,
|
||||
submitted: Date,
|
||||
responded: Date,
|
||||
respoonseId: number
|
||||
}
|
||||
|
||||
export default function EditSubmissionDialog({ stories, pubs, responses, defaults, children }: ComponentProps<"div"> & { stories: Story[], pubs: Pub[], responses: Response[], defaults: CreateSubDefaults }) {
|
||||
export default function EditSubmissionDialog({ stories, pubs, responses, defaults, children }: ComponentProps<"div"> & { stories: Story[], pubs: Pub[], responses: Response[], defaults: SubForm }) {
|
||||
|
||||
return (
|
||||
<Dialog>
|
||||
|
|
|
@ -32,12 +32,20 @@ import {
|
|||
SelectValue,
|
||||
} from "@/components/ui/select"
|
||||
import { useState } from "react"
|
||||
import { editSubmission } from "app/lib/edit"
|
||||
|
||||
export const formSchema = z.object({
|
||||
id: z.number().optional(),
|
||||
storyId: z.coerce.number(),
|
||||
pubId: z.coerce.number(),
|
||||
submitted: z.date().transform((date) => date.toString()),
|
||||
responded: z.date().transform((date) => date.toString()).optional(),
|
||||
submitted: z.coerce.date().transform((date) => date.toString()),
|
||||
responded: z.coerce.date().transform((date) => {
|
||||
|
||||
if (date.toString() !== new Date(null).toString()) {
|
||||
return date.toString()
|
||||
}
|
||||
return null
|
||||
}).optional(),
|
||||
responseId: z.coerce.number()
|
||||
})
|
||||
.refine(object => {
|
||||
|
@ -65,6 +73,8 @@ export const formSchema = z.object({
|
|||
}
|
||||
)
|
||||
|
||||
export type SubForm = z.infer<typeof formSchema>
|
||||
|
||||
|
||||
export default function SubmissionForm({ stories, pubs, responses, createSub, defaults }) {
|
||||
const form = useForm<z.infer<typeof formSchema>>({
|
||||
|
@ -106,7 +116,11 @@ export default function SubmissionForm({ stories, pubs, responses, createSub, de
|
|||
</pre>
|
||||
),
|
||||
})
|
||||
if (values.id) {
|
||||
editSubmission(values)
|
||||
} else {
|
||||
createSub(values)
|
||||
}
|
||||
console.log(values)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue