const system = require('../../../system');
const settings = require('../../../../config/settings');
const appconfig = system.getSysConfig();
module.exports = (db, DataTypes) => db.define('app', {
  appkey: {
    type: DataTypes.STRING,
    allowNull: true,
  },
  name: {
    type: DataTypes.STRING,
    allowNull: false,
  }, // 和user的from相同，在注册user时，去创建
  domainName: DataTypes.STRING, // 域名
  backend: DataTypes.STRING, // 域名
  homePage: DataTypes.STRING, // 首页
  functionJSON: DataTypes.TEXT, // 功能清单地址--前端通过loadJson下载数据
  docUrl: DataTypes.STRING, // 前端路由配置文件
  configUrl: DataTypes.STRING, // 基础信息配置信息地址
  logoUrl: DataTypes.STRING, // 应用Logo
  bkimageUrl: DataTypes.STRING, // 应用背景图
  showimgUrl: DataTypes.STRING, // 应用显示图标
  detailimgUrl: DataTypes.STRING, // 应用详情介绍地址
  opCacheUrl: DataTypes.STRING, // 操作缓存地址
  description: DataTypes.STRING, // 应用描述
  isSystem: {
    type: DataTypes.BOOLEAN,
    defaultValue: false,
  }, // 是否启用
  isEnabled: {
    type: DataTypes.BOOLEAN,
    allowNull: false,
    defaultValue: false,
  }, // 是否启用
  isPublish: {
    type: DataTypes.BOOLEAN,
    allowNull: false,
    defaultValue: false,
  }, // 是否对外
  appType: {
    type: DataTypes.ENUM,
    allowNull: true,
    values: Object.keys(appconfig.pdict.app_type),
  },
}, {
  paranoid: false, // 假的删除
  underscored: true,
  version: true,
  freezeTableName: true,
  // freezeTableName: true,
  // define the table's name
  tableName: 'p_app',
  validate: {

  },
  indexes: [
    // Create a unique index on email
    //  {
    //    unique: true,
    //    fields: ['email']
    //  },
    //
    //  // Creates a gin index on data with the jsonb_path_ops operator
    //  {
    //    fields: ['data'],
    //    using: 'gin',
    //    operator: 'jsonb_path_ops'
    //  },
    //
    //  // By default index name will be [table]_[fields]
    //  // Creates a multi column partial index
    //  {
    //    name: 'public_by_author',
    //    fields: ['author', 'status'],
    //    where: {
    //      status: 'public'
    //    }
    //  },
    //
    //  // A BTREE index with a ordered field
    //  {
    //    name: 'title_index',
    //    method: 'BTREE',
    //    fields: ['author', {attribute: 'title', collate: 'en_US', order: 'DESC', length: 5}]
    //  }
  ],
});

