import { Zone } from '@prisma/client'; import prisma from '../utilities/Prisma'; // Import the global Prisma instance class ZoneRepository { async getFirst(): Promise { try { return await prisma.zone.findFirst(); } catch (error: any) { // Handle error throw new Error(`Failed to get first zone: ${error.message}`); } } async getAll(): Promise { try { return await prisma.zone.findMany(); } catch (error: any) { // Handle error throw new Error(`Failed to get all zone: ${error.message}`); } } async getById(id: number): Promise { try { return await prisma.zone.findUnique({ where: { id: id } }); } catch (error: any) { // Handle error throw new Error(`Failed to get zone by id: ${error.message}`); } } async create(name: string, width: number, height: number, tiles: string[][]): Promise { try { return await prisma.zone.create({ data: { name: name, width: width, height: height, tiles: tiles, } }); } catch (error: any) { // Handle error throw new Error(`Failed to create zone: ${error.message}`); } } async update(id: number, name: string, width: number, height: number, tiles: string[][]): Promise { try { return await prisma.zone.update({ where: { id: id }, data: { name: name, width: width, height: height, tiles: tiles, } }); } catch (error: any) { // Handle error throw new Error(`Failed to update zone: ${error.message}`); } } async delete(id: number): Promise { try { return await prisma.zone.delete({ where: { id: id } }); } catch (error: any) { // Handle error throw new Error(`Failed to delete zone: ${error.message}`); } } } export default new ZoneRepository;