122 lines
2.0 KiB
TypeScript
122 lines
2.0 KiB
TypeScript
import { randomUUID } from 'node:crypto'
|
|
|
|
import { Collection, Entity, Enum, ManyToOne, OneToMany, PrimaryKey, Property } from '@mikro-orm/core'
|
|
|
|
import { Character } from './character'
|
|
import { Sprite } from './sprite'
|
|
|
|
import { BaseEntity } from '#application/base/baseEntity'
|
|
import { CharacterGender, CharacterRace } from '#application/enums'
|
|
import { UUID } from '#application/types'
|
|
|
|
@Entity()
|
|
export class CharacterType extends BaseEntity {
|
|
@PrimaryKey()
|
|
id = randomUUID()
|
|
|
|
@Property()
|
|
name!: string
|
|
|
|
@Enum(() => CharacterGender)
|
|
gender!: CharacterGender
|
|
|
|
@Enum(() => CharacterRace)
|
|
race!: CharacterRace
|
|
|
|
@Property()
|
|
isSelectable = false
|
|
|
|
@OneToMany(() => Character, (character) => character.characterType)
|
|
characters = new Collection<Character>(this)
|
|
|
|
@ManyToOne(() => Sprite, { nullable: true })
|
|
sprite?: Sprite
|
|
|
|
@Property()
|
|
createdAt = new Date()
|
|
|
|
@Property()
|
|
updatedAt = new Date()
|
|
|
|
setId(id: UUID) {
|
|
this.id = id
|
|
return this
|
|
}
|
|
|
|
getId() {
|
|
return this.id
|
|
}
|
|
|
|
setName(name: string) {
|
|
this.name = name
|
|
return this
|
|
}
|
|
|
|
getName() {
|
|
return this.name
|
|
}
|
|
|
|
setGender(gender: CharacterGender) {
|
|
this.gender = gender
|
|
return this
|
|
}
|
|
|
|
getGender() {
|
|
return this.gender
|
|
}
|
|
|
|
setRace(race: CharacterRace) {
|
|
this.race = race
|
|
return this
|
|
}
|
|
|
|
getRace() {
|
|
return this.race
|
|
}
|
|
|
|
setIsSelectable(isSelectable: boolean) {
|
|
this.isSelectable = isSelectable
|
|
return this
|
|
}
|
|
|
|
getIsSelectable() {
|
|
return this.isSelectable
|
|
}
|
|
|
|
setSprite(sprite: Sprite) {
|
|
this.sprite = sprite
|
|
return this
|
|
}
|
|
|
|
getSprite() {
|
|
return this.sprite
|
|
}
|
|
|
|
setCreatedAt(createdAt: Date) {
|
|
this.createdAt = createdAt
|
|
return this
|
|
}
|
|
|
|
getCreatedAt() {
|
|
return this.createdAt
|
|
}
|
|
|
|
setUpdatedAt(updatedAt: Date) {
|
|
this.updatedAt = updatedAt
|
|
return this
|
|
}
|
|
|
|
getUpdatedAt() {
|
|
return this.updatedAt
|
|
}
|
|
|
|
setCharacters(characters: Collection<Character>) {
|
|
this.characters = characters
|
|
return this
|
|
}
|
|
|
|
getCharacters() {
|
|
return this.characters
|
|
}
|
|
}
|