- Update schema: add images relation list and linkVideo field - API: support multiple image upload and YouTube link in create/update - Admin create page: add gallery upload (max 10) and YouTube embed preview - Admin edit page: manage existing/new gallery images and YouTube link - Admin detail page: display gallery grid and YouTube video embed - Public detail page: show gallery images and YouTube video with responsive layout - State: add imageIds[] and linkVideo fields with proper type handling - Music player: fix seek functionality and ESLint warnings Breaking changes: - Prisma schema updated - requires migration - API create/update endpoints now expect imageIds array and linkVideo string Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
45 lines
988 B
TypeScript
45 lines
988 B
TypeScript
import prisma from "@/lib/prisma";
|
|
import { Context } from "elysia";
|
|
|
|
type FormCreate = {
|
|
judul: string;
|
|
deskripsi: string;
|
|
content: string;
|
|
kategoriBeritaId: string;
|
|
imageId: string; // Featured image
|
|
imageIds?: string[]; // Multiple images for gallery
|
|
linkVideo?: string; // YouTube link
|
|
};
|
|
|
|
async function beritaCreate(context: Context) {
|
|
const body = context.body as FormCreate;
|
|
|
|
await prisma.berita.create({
|
|
data: {
|
|
content: body.content,
|
|
deskripsi: body.deskripsi,
|
|
imageId: body.imageId,
|
|
judul: body.judul,
|
|
kategoriBeritaId: body.kategoriBeritaId,
|
|
// Connect multiple images if provided
|
|
linkVideo: body.linkVideo,
|
|
images: body.imageIds && body.imageIds.length > 0
|
|
? {
|
|
connect: body.imageIds.map((id) => ({ id })),
|
|
}
|
|
: undefined,
|
|
},
|
|
});
|
|
|
|
return {
|
|
success: true,
|
|
message: "Sukses menambahkan berita",
|
|
data: {
|
|
...body,
|
|
},
|
|
};
|
|
}
|
|
|
|
export default beritaCreate
|
|
|