import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
import { BooleanTransformer } from '../../../utils/transformers/BooleanTransformer';

export enum VersionType {
  android = 'android',
  ios = 'ios',
  web = 'web',
}

@Entity('versions')
export class VersionEntity extends BaseEntity {
  @PrimaryGeneratedColumn({ type: 'int', name: 'id' })
  id: number;

  @Column('varchar', { name: 'version', length: 45 })
  version: string;

  @Column('enum', { name: 'type', enum: VersionType })
  type: VersionType;

  @Column('varchar', { name: 'description', nullable: true, length: 255 })
  description: string | null;

  @Column('varchar', { name: 'updateUrl', nullable: true, length: 255 })
  updateUrl: string | null;

  @Column('tinyint', {
    name: 'isForced',
    width: 1,
    default: () => "'0'",
    transformer: new BooleanTransformer(),
  })
  isForced: boolean;

  @Column('tinyint', {
    name: 'isReviewing',
    width: 1,
    default: () => "'0'",
    transformer: new BooleanTransformer(),
  })
  isReviewing: boolean;

  @Column('datetime', { name: 'createdAt' })
  createdAt: Date;

  @Column('datetime', { name: 'updatedAt', nullable: true })
  updatedAt: Date | null;
}
