"use server"; import { auth } from "@/auth"; import { isEmailVerified } from "@/util/isEmailVerified"; import { redirect } from "next/navigation"; import { prisma } from "@/prisma/prismaClient"; export const saveSchemaDb = async (s: Schema) => { const sesh = await auth(); if (!sesh?.user?.id) return; const { id } = await prisma.schema.upsert({ // data: { // ...s, // }, create: { ...s, version: 0, authorId: sesh.user.id, id: undefined, }, update: s, where: { id: s.id, }, select: { id: true, }, }); redirect(`/game-systems/${s.gameSystemId}/schema/${id}`); }; export const findSchema = async (id: string): Promise => { const schema = await prisma.schema.findFirst({ where: { id, }, // include: { // gameSystem: { // select: { // id: true, // name: true, // }, // }, // }, select: { id: true, name: true, schema: true, types: true, }, }); if (!schema) return null; return schema as Schema; }; export const createSchema = async (form: FormData) => { const name = form.get("name")?.toString(); const gsId = form.get("gsId")?.toString(); const session = await auth(); if (!name || !gsId || !session?.user?.id || !isEmailVerified(session.user.id)) return; const { id } = await prisma.schema.create({ data: { name, schema: "{}", types: "{}", version: 0, gameSystemId: gsId, authorId: session.user.id, }, select: { id: true }, }); redirect(`/game-systems/${gsId}/schema/${id}`); };