import { Entity, Column, PrimaryGeneratedColumn, Index, CreateDateColumn } from 'typeorm';

@Entity('asn_data')
export class AsnEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ name: 'start_ip', type: 'varchar' })
  startIp: string;

  @Column({ name: 'end_ip', type: 'varchar' })
  endIp: string;

  @Column({ name: 'start_ip_num', type: 'bigint', unsigned: true, nullable: true })
  startIpNum: bigint | null;

  @Column({ name: 'end_ip_num', type: 'bigint', unsigned: true, nullable: true })
  endIpNum: bigint | null;

  @Column({ name: 'start_ip_bin', type: 'varbinary', length: 16, nullable: true })
  startIpBin: Buffer | null;

  @Column({ name: 'end_ip_bin', type: 'varbinary', length: 16, nullable: true })
  endIpBin: Buffer | null;

  @Column({ name: 'asn', type: 'varchar' })
  asn: string;

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

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

  @Column({ name: 'data_hash', type: 'varchar', length: 64, nullable: true })
  @Index()
  dataHash: string;

  @CreateDateColumn({ name: 'created_at' })
  createdAt: Date;

  @CreateDateColumn({ name: 'updated_at' })
  updatedAt: Date;
}
