diff --git a/src/app/api/admin/banners/route.ts b/src/app/api/admin/banners/route.ts index ab2f092..696389f 100644 --- a/src/app/api/admin/banners/route.ts +++ b/src/app/api/admin/banners/route.ts @@ -1,5 +1,6 @@ import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; +import type { Prisma } from "@prisma/client"; import { z } from "zod"; export async function GET() { @@ -24,7 +25,7 @@ export async function POST(req: Request) { const body = await req.json().catch(() => ({})); const parsed = createSchema.safeParse(body); if (!parsed.success) return NextResponse.json({ error: parsed.error.flatten() }, { status: 400 }); - const banner = await prisma.banner.create({ data: parsed.data }); + const banner = await prisma.banner.create({ data: parsed.data as Prisma.BannerCreateInput }); return NextResponse.json({ banner }, { status: 201 }); } diff --git a/src/app/api/admin/boards/route.ts b/src/app/api/admin/boards/route.ts index 0cf87fa..039e987 100644 --- a/src/app/api/admin/boards/route.ts +++ b/src/app/api/admin/boards/route.ts @@ -1,5 +1,6 @@ import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; +import type { Prisma } from "@prisma/client"; import { z } from "zod"; export async function GET() { @@ -54,7 +55,13 @@ export async function POST(req: Request) { }); sortOrder = (max._max.sortOrder ?? 0) + 1; } - const created = await prisma.board.create({ data: { ...data, sortOrder } }); + const { categoryId, sortOrder: _ignored, ...rest } = data; + const createData: Prisma.BoardCreateInput = { + ...(rest as any), + sortOrder, + ...(categoryId ? { category: { connect: { id: categoryId } } } : {}), + }; + const created = await prisma.board.create({ data: createData }); return NextResponse.json({ board: created }, { status: 201 }); } diff --git a/src/app/api/admin/categories/route.ts b/src/app/api/admin/categories/route.ts index f002837..176b8c8 100644 --- a/src/app/api/admin/categories/route.ts +++ b/src/app/api/admin/categories/route.ts @@ -1,6 +1,7 @@ import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; import { z } from "zod"; +import type { Prisma } from "@prisma/client"; export async function GET() { const categories = await prisma.boardCategory.findMany({ @@ -20,7 +21,7 @@ export async function POST(req: Request) { const body = await req.json().catch(() => ({})); const parsed = createSchema.safeParse(body); if (!parsed.success) return NextResponse.json({ error: parsed.error.flatten() }, { status: 400 }); - const category = await prisma.boardCategory.create({ data: parsed.data }); + const category = await prisma.boardCategory.create({ data: parsed.data as Prisma.BoardCategoryCreateInput }); return NextResponse.json({ category }, { status: 201 }); } diff --git a/src/app/api/admin/partner-shops/route.ts b/src/app/api/admin/partner-shops/route.ts index 703bc3b..eaafcab 100644 --- a/src/app/api/admin/partner-shops/route.ts +++ b/src/app/api/admin/partner-shops/route.ts @@ -1,6 +1,7 @@ import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; import { z } from "zod"; +import type { Prisma } from "@prisma/client"; export async function GET() { const items = await prisma.partnerShop.findMany({ orderBy: [{ active: "desc" }, { sortOrder: "asc" }, { createdAt: "desc" }] }); @@ -20,7 +21,7 @@ export async function POST(req: Request) { const body = await req.json().catch(() => ({})); const parsed = createSchema.safeParse(body); if (!parsed.success) return NextResponse.json({ error: parsed.error.flatten() }, { status: 400 }); - const item = await prisma.partnerShop.create({ data: parsed.data }); + const item = await prisma.partnerShop.create({ data: parsed.data as Prisma.PartnerShopCreateInput }); return NextResponse.json({ item }, { status: 201 }); } diff --git a/src/app/api/admin/view-types/route.ts b/src/app/api/admin/view-types/route.ts index 084daac..f4738ec 100644 --- a/src/app/api/admin/view-types/route.ts +++ b/src/app/api/admin/view-types/route.ts @@ -1,6 +1,7 @@ import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; import { z } from "zod"; +import type { Prisma } from "@prisma/client"; export async function GET() { const items = await prisma.boardViewType.findMany({ orderBy: [{ scope: 'asc' }, { name: 'asc' }] }); @@ -19,7 +20,7 @@ export async function POST(req: Request) { if (!parsed.success) return NextResponse.json({ error: parsed.error.flatten() }, { status: 400 }); const exists = await prisma.boardViewType.findFirst({ where: { key: parsed.data.key } }); if (exists) return NextResponse.json({ error: 'duplicate_key' }, { status: 409 }); - const created = await prisma.boardViewType.create({ data: parsed.data }); + const created = await prisma.boardViewType.create({ data: parsed.data as Prisma.BoardViewTypeCreateInput }); return NextResponse.json({ item: created }, { status: 201 }); } diff --git a/src/app/api/coupons/route.ts b/src/app/api/coupons/route.ts index a32be0f..3b21ba6 100644 --- a/src/app/api/coupons/route.ts +++ b/src/app/api/coupons/route.ts @@ -1,6 +1,7 @@ import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; import { z } from "zod"; +import type { Prisma } from "@prisma/client"; export async function GET() { const now = new Date(); @@ -30,7 +31,7 @@ export async function POST(req: Request) { const body = await req.json().catch(() => ({})); const parsed = createSchema.safeParse(body); if (!parsed.success) return NextResponse.json({ error: parsed.error.flatten() }, { status: 400 }); - const data = await prisma.coupon.create({ data: parsed.data }); + const data = await prisma.coupon.create({ data: parsed.data as Prisma.CouponCreateInput }); return NextResponse.json({ coupon: data }, { status: 201 }); } diff --git a/src/app/api/partner-inquiries/route.ts b/src/app/api/partner-inquiries/route.ts index 7b1b85b..2886206 100644 --- a/src/app/api/partner-inquiries/route.ts +++ b/src/app/api/partner-inquiries/route.ts @@ -1,6 +1,7 @@ import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; import { z } from "zod"; +import type { Prisma } from "@prisma/client"; const schema = z.object({ name: z.string().min(1), contact: z.string().min(1), category: z.string().optional(), message: z.string().min(1) }); @@ -8,7 +9,7 @@ export async function POST(req: Request) { const body = await req.json().catch(() => ({})); const parsed = schema.safeParse(body); if (!parsed.success) return NextResponse.json({ error: parsed.error.flatten() }, { status: 400 }); - const created = await prisma.partnerInquiry.create({ data: parsed.data }); + const created = await prisma.partnerInquiry.create({ data: parsed.data as Prisma.PartnerInquiryCreateInput }); return NextResponse.json({ inquiry: created }, { status: 201 }); } diff --git a/src/app/api/partner-requests/route.ts b/src/app/api/partner-requests/route.ts index acea910..a0a534b 100644 --- a/src/app/api/partner-requests/route.ts +++ b/src/app/api/partner-requests/route.ts @@ -1,6 +1,7 @@ import { NextResponse } from "next/server"; import prisma from "@/lib/prisma"; import { z } from "zod"; +import type { Prisma } from "@prisma/client"; const schema = z.object({ name: z.string().min(1), category: z.string().min(1), latitude: z.coerce.number(), longitude: z.coerce.number(), address: z.string().optional(), contact: z.string().optional() }); @@ -8,7 +9,7 @@ export async function POST(req: Request) { const body = await req.json().catch(() => ({})); const parsed = schema.safeParse(body); if (!parsed.success) return NextResponse.json({ error: parsed.error.flatten() }, { status: 400 }); - const created = await prisma.partnerRequest.create({ data: parsed.data }); + const created = await prisma.partnerRequest.create({ data: parsed.data as Prisma.PartnerRequestCreateInput }); return NextResponse.json({ request: created }, { status: 201 }); } diff --git a/src/app/components/RankIcon1st.tsx b/src/app/components/RankIcon1st.tsx index 7840e07..8438db6 100644 --- a/src/app/components/RankIcon1st.tsx +++ b/src/app/components/RankIcon1st.tsx @@ -8,7 +8,7 @@ export function RankIcon1st({ width = 20, height = 21 }: { width?: number; heigh -
+
diff --git a/src/app/components/RankIcon2nd.tsx b/src/app/components/RankIcon2nd.tsx index d4c0c67..fbb7231 100644 --- a/src/app/components/RankIcon2nd.tsx +++ b/src/app/components/RankIcon2nd.tsx @@ -8,7 +8,7 @@ export function RankIcon2nd({ width = 20, height = 21 }: { width?: number; heigh -
+
diff --git a/src/app/components/RankIcon3rd.tsx b/src/app/components/RankIcon3rd.tsx index b45f2fd..825fa2d 100644 --- a/src/app/components/RankIcon3rd.tsx +++ b/src/app/components/RankIcon3rd.tsx @@ -11,7 +11,7 @@ export function RankIcon3rd({ width = 20, height = 20 }: { width?: number; heigh -
+
diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 6cea40a..9794ed3 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,4 +1,5 @@ import type { Metadata } from "next"; +import { Suspense } from "react"; import "./globals.css"; import QueryProvider from "@/app/QueryProvider"; import { AppHeader } from "@/app/components/AppHeader"; @@ -26,7 +27,9 @@ export default function RootLayout({
- + + +
diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index bb4794f..4c9ab53 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -1,5 +1,5 @@ -import Link from "next/link"; "use client"; +import Link from "next/link"; import React from "react"; import { Button } from "@/app/components/ui/Button"; import { useToast } from "@/app/components/ui/ToastProvider"; diff --git a/src/app/ranking/page.tsx b/src/app/ranking/page.tsx index 9477401..28109c5 100644 --- a/src/app/ranking/page.tsx +++ b/src/app/ranking/page.tsx @@ -1,5 +1,5 @@ -import Link from "next/link"; "use client"; +import Link from "next/link"; import useSWR from "swr"; const fetcher = (url: string) => fetch(url).then((r) => r.json());