diff --git a/src/app/ZoneManager.ts b/src/app/ZoneManager.ts index 4d1cff0..101ee14 100644 --- a/src/app/ZoneManager.ts +++ b/src/app/ZoneManager.ts @@ -1,5 +1,6 @@ import {Character, Zone} from "@prisma/client"; import ZoneRepository from "./repositories/zone.repository"; +import ZoneService from "./services/zone.service"; interface ILoadedZone { zone: Zone; @@ -23,6 +24,12 @@ class ZoneManager { // Method to initialize zone loading public async boot() { const zoneRepository = new ZoneRepository(); + + if (!await zoneRepository.getById(1)) { + const zoneService = new ZoneService(); + await zoneService.createDemoZone(); + } + const zones = await zoneRepository.getAll(); for (const zone of zones) { diff --git a/src/app/repositories/zone.repository.ts b/src/app/repositories/zone.repository.ts index 508eb74..8b07d19 100644 --- a/src/app/repositories/zone.repository.ts +++ b/src/app/repositories/zone.repository.ts @@ -19,6 +19,35 @@ class ZoneRepository { 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: any): 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}`); + } + } } export default ZoneRepository; \ No newline at end of file diff --git a/src/app/services/zone.service.ts b/src/app/services/zone.service.ts index 6007f68..3343398 100644 --- a/src/app/services/zone.service.ts +++ b/src/app/services/zone.service.ts @@ -1,13 +1,26 @@ -import {LoadedZoneEntity} from "../entities/LoadedZoneEntity"; import {Zone} from "@prisma/client"; +import ZoneRepository from "../repositories/zone.repository"; class ZoneService { - public loaded: LoadedZoneEntity[] = []; - - public boot() { - // Load all zones - // const zones = await new ZoneRepository().getAll(); - // this.loadedZones = zones; + async createDemoZone(): Promise + { + const zoneRepo = new ZoneRepository(); + await zoneRepo.create("Demo Zone", 10, 10, [ + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 1, 1, 1, 1, 1, 1, 1, 1, 0], + [0, 1, 1, 1, 1, 1, 1, 1, 1, 0], + [0, 1, 1, 1, 1, 1, 1, 1, 1, 0], + [0, 1, 1, 1, 1, 1, 1, 1, 1, 0], + [0, 1, 1, 1, 1, 1, 1, 1, 1, 0], + [0, 1, 1, 1, 1, 1, 1, 1, 1, 0], + [0, 1, 1, 1, 1, 1, 1, 1, 1, 0], + [0, 1, 1, 1, 1, 1, 1, 1, 1, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + ]) + console.log("Demo zone created."); + return true; } -} \ No newline at end of file +} + +export default ZoneService; \ No newline at end of file diff --git a/src/app/utilities/api.ts b/src/app/utilities/api.ts index 5f5ecdf..aabe027 100644 --- a/src/app/utilities/api.ts +++ b/src/app/utilities/api.ts @@ -26,7 +26,7 @@ async function addAuthRoutes(app: any) { return res.status(400).json({ message: 'Failed to register user' }); }); - console.log('[🕸️] Auth routes added'); + console.log('[✅] Auth routes added'); } export default { addAuthRoutes }; \ No newline at end of file