import { Column, Entity, OneToMany } from "typeorm";
import BaseEntity from "../../../contracts/BaseEntity";
import { CardRarity } from "../../../constants/CardRarity";
import Series from "./Series";
import CardDataSource from "../../dataSources/cardDataSource";

@Entity()
export default class Card extends BaseEntity {
    constructor(id: string, name: string, rarity: CardRarity) {
        super();

        this.Id = id;
        this.Name = name;
        this.Rarity = rarity;
    }

    @Column()
    Name: string;

    @Column()
    Rarity: CardRarity;

    @OneToMany(() => Series, x => x.Cards)
    Series: Series;

    public static async FetchAllByRarity(rarity: CardRarity): Promise<Card[]> {
        const repository = CardDataSource.getRepository(Card);

        const all = await repository.find({ where: { Rarity: rarity }});

        return all;
    }
}