import { Entity, Column, PrimaryGeneratedColumn, ManyToOne, JoinColumn } from 'typeorm';
import { UserEntity } from './user.entity';
import { KeyRarity } from '../types/key.types';

@Entity('keys')
export class KeyEntity {
    @PrimaryGeneratedColumn()
    id!: number;

    @Column()
    type!: string;

    @Column({
        type: 'enum',
        enum: KeyRarity
    })
    rarity!: KeyRarity;

    @Column()
    level!: number;

    @Column()
    dungeonId!: number;

    @Column()
    quantity!: number;

    @Column({ nullable: true })
    lastUsedAt?: Date;

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

    @Column()
    userId!: string;

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

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