import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, CreateDateColumn, UpdateDateColumn, DeleteDateColumn } from 'typeorm';
import { Users } from './users.entity';

@Entity('cards')
export class Card {
    @PrimaryGeneratedColumn('uuid')
    id: string;

    @Column({ type: 'uuid' })
    user_id: string;

    @ManyToOne(() => Users, (user) => user.cards, { onDelete: 'CASCADE' })
    users: Users;

    @Column({ type: 'varchar', length: 255 })
    card_id: string;

    @Column({ type: 'varchar', length: 255 })
    card_holder_name: string;

    @Column({ type: 'varchar', length: 4 })
    last4: string;

    @Column({ type: 'varchar', length: 50 })
    brand: string;

    @Column({ type: 'int', width: 2 })
    exp_month: number;

    @Column({ type: 'int', width: 4 })
    exp_year: number;

    @Column({ type: 'boolean', default: false })
    is_default: boolean;

    @Column({ type: 'jsonb', default: null })
    card_response: Record<string, any>;

    @CreateDateColumn({
        type: 'timestamp',
        precision: 0,
        default: () => 'CURRENT_TIMESTAMP',
    })
    created_at: Date;

    @UpdateDateColumn({
        type: 'timestamp',
        precision: 0,
        default: () => 'CURRENT_TIMESTAMP',
        onUpdate: 'CURRENT_TIMESTAMP',
    })
    updated_at: Date;

    @DeleteDateColumn({ type: 'timestamp', nullable: true, precision: 0 })
    deleted_at: Date;

}
