sequelize-mysql-model

0.1.7 • Public • Published

sequelize-mysql-model

Modify from SequelizeAuto - 0.4.29. Automatically generate models for SequelizeJS.

Programmatic API Only

Mysql Only

Feature Support

  1. comment support

  2. modelNameResolve function support

    open this option will disable model camelCase

  3. fileNameResolve function support

    open this option will disable camelCaseForFileName

Install

npm install --save-dev sequelize-mysql-model

Prerequisites

You will need to run npm install --save mysql before using sequelize-mysql-model.

Programmatic API

var SequelizeAuto = require('sequelize-mysql-model')

var db = {
    host: 'host',
    user: 'user',
    password: 'password',
    database: 'database',
    port: '3306'
};

var auto = new SequelizeAuto(db.database, db.user, db.password, {
    host: db.host,
    dialect: 'mysql',
    port: db.port,
    directory: './models',
    additional: {
        timestamps: false
    },
    tables: ['f_user', 'f_article', 'f_article_category'],
    modelNameResolve: function (table_name) {
        if (table_name.indexOf("f_") !== -1) {
            return table_name.substring(2)
        } else {
            return table_name
        }
    },
    fileNameResolve: function (table_name) {
        if (table_name.indexOf("f_") !== -1) {
            return table_name.substring(2)
        } else {
            return table_name
        }
    }
});

auto.run(function (err) {
    if (err) throw err;

    console.log(auto.tables); // table list
    console.log(auto.foreignKeys); // foreign key list
});

Produces a file/files such as ./models/article.js which looks like:

module.exports = function (sequelize, DataTypes) {
    return sequelize.define('article', {
        id: {
            allowNull: false,
            primaryKey: true,
            type: DataTypes.STRING(30),
            title: "id",
            formType: "TEXT"
        },
        article_category_id: {
            allowNull: false,
            type: DataTypes.STRING(30),
            title: "分类id",
            formType: "TEXT"
        },
        name: {
            allowNull: false,
            type: DataTypes.STRING(50),
            title: "名称",
            formType: "TEXT"
        },
        author: {
            allowNull: false,
            type: DataTypes.STRING(10),
            title: "作者",
            formType: "TEXT"
        },
        content: {
            allowNull: false,
            type: DataTypes.TEXT,
            title: "内容",
            formType: "TEXT"
        },
        content_md: {
            allowNull: false,
            type: DataTypes.TEXT,
            title: "markdown源格式",
            formType: "TEXT"
        },
        brief: {
            allowNull: false,
            type: DataTypes.STRING(400),
            title: "摘要",
            formType: "TEXT"
        },
        cover: {
            allowNull: false,
            type: DataTypes.STRING(100),
            title: "封面",
            formType: "TEXT"
        },
        is_show_cover: {
            allowNull: false,
            defaultValue: '0',
            type: DataTypes.INTEGER(4),
            title: "是否显示封面",
            formType: "SELECT",
            formValue: {0: "不显示", 1: "显示"}
        },
        is_show_comment: {
            allowNull: false,
            defaultValue: '1',
            type: DataTypes.INTEGER(4),
            title: "是否显示评论",
            formType: "SELECT",
            formValue: {0: "不显示", 1: "显示"}
        },
        is_publish: {
            allowNull: false,
            defaultValue: '1',
            type: DataTypes.INTEGER(4),
            title: "是否发布",
            formType: "SELECT",
            formValue: {0: "未发布", 1: "已发布"}
        },
        is_show: {
            allowNull: false,
            defaultValue: '1',
            type: DataTypes.INTEGER(4),
            title: "是否可见",
            formType: "SELECT",
            formValue: {0: "不可见", 1: "可见"}
        },
        tag: {
            allowNull: true,
            type: DataTypes.STRING(100),
            title: "标签",
            formType: "TEXT"
        },
        seo_url: {
            allowNull: true,
            type: DataTypes.STRING(50),
            title: "SEO链接",
            formType: "TEXT",
            unique: true
        },
        seo_keywords: {
            allowNull: true,
            type: DataTypes.STRING(200),
            title: "SEO关键词",
            formType: "TEXT"
        },
        seo_description: {
            allowNull: true,
            type: DataTypes.STRING(200),
            title: "SEO描述",
            formType: "TEXT"
        },
        publish_at: {
            allowNull: true,
            type: DataTypes.STRING(24),
            title: "发布日期",
            formType: "TEXT"
        },
        create_at: {
            allowNull: true,
            type: DataTypes.STRING(24),
            title: "创建日期",
            formType: "TEXT"
        },
        create_by: {
            allowNull: true,
            type: DataTypes.STRING(30),
            title: "创建人",
            formType: "TEXT"
        },
        update_at: {
            allowNull: true,
            type: DataTypes.STRING(24),
            title: "更新日期",
            formType: "TEXT"
        },
        update_by: {
            allowNull: true,
            type: DataTypes.STRING(30),
            title: "更新人",
            formType: "TEXT"
        },
        delete_at: {
            allowNull: true,
            type: DataTypes.STRING(24),
            title: "删除日期",
            formType: "TEXT"
        },
        delete_by: {
            allowNull: true,
            type: DataTypes.STRING(30),
            title: "删除人",
            formType: "TEXT"
        }
    }, {
        tableName: 'f_article',
        timestamps: false
    });
};

Package Sidebar

Install

npm i sequelize-mysql-model

Weekly Downloads

0

Version

0.1.7

License

MIT

Last publish

Collaborators

  • daweilv