1
0
forked from noxious/server

#174: Refactor character manager into zoneManager for better DX, major refactor of time and weather system (data is stored in DB now instead of JSON file), npm update, npm format, many other improvements

This commit is contained in:
2024-11-13 13:21:01 +01:00
parent 628b3bf1fa
commit d4e0cbe398
43 changed files with 465 additions and 461 deletions

View File

@ -1,5 +1,6 @@
import prisma from '../utilities/prisma' // Import the global Prisma instance
import { Character } from '@prisma/client'
import { appLogger } from '../utilities/logger'
class CharacterRepository {
async getByUserId(userId: number): Promise<Character[] | null> {
@ -19,7 +20,8 @@ class CharacterRepository {
})
} catch (error: any) {
// Handle error
throw new Error(`Failed to get character by user ID: ${error.message}`)
appLogger.error(`Failed to get character by user ID: ${error instanceof Error ? error.message : String(error)}`)
return null
}
}
@ -41,7 +43,8 @@ class CharacterRepository {
})
} catch (error: any) {
// Handle error
throw new Error(`Failed to get character by user ID and character ID: ${error.message}`)
appLogger.error(`Failed to get character by user ID and character ID: ${error instanceof Error ? error.message : String(error)}`)
return null
}
}
@ -62,7 +65,8 @@ class CharacterRepository {
})
} catch (error: any) {
// Handle error
throw new Error(`Failed to get character by ID: ${error.message}`)
appLogger.error(`Failed to get character by ID: ${error instanceof Error ? error.message : String(error)}`)
return null
}
}
@ -79,7 +83,8 @@ class CharacterRepository {
})
} catch (error: any) {
// Handle error
throw new Error(`Failed to update character: ${error.message}`)
appLogger.error(`Failed to update character: ${error instanceof Error ? error.message : String(error)}`)
return null
}
}
@ -93,7 +98,8 @@ class CharacterRepository {
})
} catch (error: any) {
// Handle error
throw new Error(`Failed to delete character by user ID and character ID: ${error.message}`)
appLogger.error(`Failed to delete character by user ID and character ID: ${error instanceof Error ? error.message : String(error)}`)
return null
}
}
@ -114,7 +120,8 @@ class CharacterRepository {
})
} catch (error: any) {
// Handle error
throw new Error(`Failed to get character by name: ${error.message}`)
appLogger.error(`Failed to get character by name: ${error instanceof Error ? error.message : String(error)}`)
return null
}
}
}

View File

@ -1,4 +1,5 @@
import prisma from '../utilities/prisma' // Import the global Prisma instance
import prisma from '../utilities/prisma'
import { appLogger } from '../utilities/logger' // Import the global Prisma instance
class PasswordResetTokenRepository {
async getById(id: number): Promise<any> {
@ -10,7 +11,7 @@ class PasswordResetTokenRepository {
})
} catch (error: any) {
// Handle error
throw new Error(`Failed to get password reset token by ID: ${error.message}`)
appLogger.error(`Failed to get password reset token by ID: ${error instanceof Error ? error.message : String(error)}`)
}
}
@ -23,7 +24,7 @@ class PasswordResetTokenRepository {
})
} catch (error: any) {
// Handle error
throw new Error(`Failed to get password reset token by user ID: ${error.message}`)
appLogger.error(`Failed to get password reset token by user ID: ${error instanceof Error ? error.message : String(error)}`)
}
}
@ -36,7 +37,7 @@ class PasswordResetTokenRepository {
})
} catch (error: any) {
// Handle error
throw new Error(`Failed to get password reset token by token: ${error.message}`)
appLogger.error(`Failed to get password reset token by token: ${error instanceof Error ? error.message : String(error)}`)
}
}
}

View File

@ -1,5 +1,6 @@
import prisma from '../utilities/prisma' // Import the global Prisma instance
import { User } from '@prisma/client'
import { appLogger } from '../utilities/logger'
class UserRepository {
async getById(id: number): Promise<User | null> {
@ -11,7 +12,8 @@ class UserRepository {
})
} catch (error: any) {
// Handle error
throw new Error(`Failed to get user by ID: ${error.message}`)
appLogger.error(`Failed to get user by ID: ${error instanceof Error ? error.message : String(error)}`)
return null
}
}
@ -24,7 +26,8 @@ class UserRepository {
})
} catch (error: any) {
// Handle error
throw new Error(`Failed to get user by username: ${error.message}`)
appLogger.error(`Failed to get user by username: ${error instanceof Error ? error.message : String(error)}`)
return null
}
}
@ -37,7 +40,8 @@ class UserRepository {
})
} catch (error: any) {
// Handle error
throw new Error(`Failed to get user by email: ${error.message}`)
appLogger.error(`Failed to get user by email: ${error instanceof Error ? error.message : String(error)}`)
return null
}
}
}

View File

@ -0,0 +1,19 @@
import prisma from '../utilities/prisma' // Import the global Prisma instance
import { World } from '@prisma/client'
import { gameLogger } from '../utilities/logger'
class WorldRepository {
async getFirst(): Promise<World | null> {
try {
return await prisma.world.findFirst({
orderBy: { date: 'desc' }
})
} catch (error: any) {
// Handle error
gameLogger.error(`Failed to get first world: ${error instanceof Error ? error.message : String(error)}`)
return null
}
}
}
export default new WorldRepository()

View File

@ -1,20 +1,9 @@
import { Zone, ZoneEventTile, ZoneEventTileType, ZoneObject } from '@prisma/client'
import prisma from '../utilities/prisma'
import { ZoneEventTileWithTeleport } from '../socketEvents/zone/characterMove'
import { ZoneEventTileWithTeleport } from '../utilities/types'
import { appLogger } from '../utilities/logger'
import { AssetData } from '../utilities/types'
import tileRepository from './tileRepository'
class ZoneRepository {
async getFirst(): Promise<Zone | null> {
try {
return await prisma.zone.findFirst()
} catch (error: any) {
appLogger.error(`Failed to get first zone: ${error.message}`)
return null
}
}
async getAll(): Promise<Zone[]> {
try {
return await prisma.zone.findMany()