import { Entity, Column, PrimaryGeneratedColumn, ManyToOne, JoinColumn } from 'typeorm';
import { Role, ResourcesType, Skill } from '../types/character.types';
import { Equipment } from '../types/item.types';
import { DamageType, Stats } from '../types/stats.types';
import { UserEntity } from './user.entity';

@Entity('characters')
export class CharacterEntity {
    @PrimaryGeneratedColumn()
    id!: number;

    @Column()
    name!: string;

    @Column()
    role!: Role;

    @Column()
    level!: number;

    @Column()
    experience!: number;

    @Column('jsonb')
    stats!: Stats;

    @Column('jsonb')
    skills!: Skill[];

    @Column('jsonb')
    resources!: ResourcesType;

    @Column('jsonb')
    damageType!: DamageType;

    @Column('jsonb')
    equipments!: Equipment[];

    @ManyToOne(() => UserEntity, user => user.characters)
    @JoinColumn({ name: 'userId' })
    user!: UserEntity;

    @Column()
    userId!: string;

    @Column({ type: 'timestamp' })
    createdAt!: Date;

    constructor(partial: Partial<CharacterEntity>) {
        Object.assign(this, partial);
    }
} 