import { type IType, type Opt, PrimaryKeyProp, defineEntity, p } from '@mikro-orm/core';

export class IcrDotfile {
  [PrimaryKeyProp]?: 'Id';
  Id!: IType<number, bigint>;
  Name?: string;
  FileName?: string;
  FileAddress?: string;
  PageStart?: string;
  PageEnd?: string;
  Revision!: number;
  CreatedBy?: IType<number, bigint>;
  CreatedTime!: Date;
  UpdatedBy?: IType<number, bigint>;
  UpdatedTime?: Date;
  IsDeleted!: unknown;
  Width: number & Opt = 0;
  Hight: number & Opt = 0;
  Total: number & Opt = 0;
  TotalUse: number & Opt = 0;
}

export const IcrDotfileSchema = defineEntity({
  class: IcrDotfile,
  properties: {
    Id: p.bigint().primary().name('Id').columnType('bigint').unsigned(false).autoincrement(false).comment('主键Id'),
    Name: p.string().name('Name').nullable().comment('名称'),
    FileName: p.string().name('FileName').nullable().comment('文件名称'),
    FileAddress: p.string().name('FileAddress').nullable().comment('文件网络地址'),
    PageStart: p.string().name('PageStart').nullable().comment('开始页码'),
    PageEnd: p.string().name('PageEnd').nullable().comment('结束页码'),
    Revision: p.integer().name('Revision').comment('乐观锁'),
    CreatedBy: p.bigint().name('CreatedBy').columnType('bigint').nullable().comment('创建者用户Id'),
    CreatedTime: p.datetime().name('CreatedTime').length(3).comment('创建时间'),
    UpdatedBy: p.bigint().name('UpdatedBy').columnType('bigint').nullable().comment('修改者用户Id'),
    UpdatedTime: p.datetime().name('UpdatedTime').length(3).nullable().comment('修改时间'),
    IsDeleted: p.array().name('IsDeleted').comment('是否删除'),
    Width: p.float().name('Width').comment('宽毫米'),
    Hight: p.float().name('Hight').comment('高毫米'),
    Total: p.integer().name('Total').comment('总数量'),
    TotalUse: p.integer().name('TotalUse').comment('已使用数量'),
  },
});
