Source: model/project.js

'use strict';

const STATUS_ENABLE = true;
const STATUS_DISABLE = false;


module.exports = (sequelize, DataTypes, BaseModel) => {
  /**
   * @class
   * Project Model
   * @extends BaseModel
   */
  class Project extends BaseModel {}

  /**
   * Project 项目
   * 管理项目, 包含多个 `进程(process)`, `行为(action)`
   * @memberof model
   * @namespace Project
   * @property {string}   name      - 项目名称
   * @property {string}   key       - 项目key, 唯一不重复
   * @property {string}   desc      - 描述
   * @property {boolean}  status    - 状态 true 激活、false 禁用
   */
  Project.init({
    id: {
      type: DataTypes.INTEGER,
      primaryKey: true,
      autoIncrement: true,
    },
    name: {
      type: DataTypes.STRING(30),
      allowNull: false,
      comment: '项目名称',
    },
    key: {
      type: DataTypes.STRING(30),
      allowNull: false,
      comment: '项目key',
    },
    desc: {
      type: DataTypes.TEXT,
      comment: '项目描述',
    },
    status: {
      type: DataTypes.BOOLEAN,
      allowNull: false,
      comment: `ENABLE ${STATUS_ENABLE} 激活 DISABLE ${STATUS_DISABLE} 禁用`,
    },
    createdAt: DataTypes.DATE,
    updatedAt: DataTypes.DATE,
    version: DataTypes.INTEGER,
  }, {
    timestamps: true,
    paranoid: false,
    version: true,
    freezeTableName: true,
    // define the table's name
    tableName: 'projects',
    modelName: 'Project',
    sequelize,
    indexes: [
      { unique: true, fields: ['key'] },
    ],
  });

  return Project;
};