import {
    Column,
    CreateDateColumn,
    Entity,
    JoinColumn,
    ManyToOne,
    PrimaryGeneratedColumn,
    UpdateDateColumn,
  } from 'typeorm';
  import { Member } from './member.entity';

  @Entity({ name: 'member_families' })
  export class MemberFamily {
    @PrimaryGeneratedColumn('uuid')
    id!: string;

    @Column({ type: 'varchar', name: 'member_id' })
    memberId!: string;

    @ManyToOne(() => Member, (m) => m.family, { onDelete: 'CASCADE' })
    @JoinColumn({ name: 'member_id' })
    member!: Member;

    @Column({ type: 'varchar', length: 200 })
    name!: string;

    @Column({ type: 'varchar', length: 200, nullable: true })
    nameEn?: string;

    // 'grandfather'|'grandmother'|'father'|'mother'|'spouse'|'son'|'daughter'|'brother'|'sister'|'nominee'|'other'
    @Column({ type: 'varchar', length: 100 })
    relation!: string;

    @Column({ type: 'varchar', length: 20, nullable: true })
    dob?: string;

    @Column({ type: 'varchar', name: 'dob_bs', length: 20, nullable: true })
    dobBs?: string;

    @Column({ type: 'varchar', name: 'citizenship_no', nullable: true })
    citizenshipNo?: string;

    @Column({ type: 'varchar', name: 'contact_number', nullable: true })
    contactNumber?: string;

    @Column({ type: 'varchar', nullable: true })
    address?: string;

    @Column({ name: 'is_nominee', default: false })
    isNominee!: boolean;

    @Column({ type: 'varchar', name: 'nominee_share_percent', nullable: true })
    nomineeSharePercent?: string;

    @Column({ type: 'varchar', name: 'photo_url', nullable: true })
    photoUrl?: string;

    @Column({ default: 0 })
    order!: number;

    @CreateDateColumn()
    createdAt!: Date;

    @UpdateDateColumn()
    updatedAt!: Date;
  }
