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

@Entity('geo_names')
export class GeoName {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ name: 'geoname_id', unique: true })
  geonameId: number;

  @Column({ name: 'locale_code', nullable: true })
  localeCode: string;

  @Column({ name: 'continent_code', nullable: true })
  continentCode: string;

  @Column({ name: 'continent_name', nullable: true })
  continentName: string;

  @Column({ name: 'country_iso_code', nullable: true })
  countryIsoCode: string;

  @Column({ name: 'country_name', nullable: true, default: 'N/A' })
  countryName: string;

  @Column({ name: 'subdivision_1_iso_code', nullable: true })
  subdivision1IsoCode?: string;

  @Column({ name: 'subdivision_1_name', nullable: true })
  subdivision1Name?: string;

  @Column({ name: 'city_name', nullable: true })
  cityName: string;

  @Column({ name: 'time_zone', nullable: true })
  timeZone: 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;
}
