module.exports = function (sequelize, DataTypes) {
    var Post = sequelize.define('Post', {
        uuid: {
            type: DataTypes.STRING(50),
            unique: true,
            allowNull: false
        },
        title: {
            type: DataTypes.STRING(500),
            allowNull: true
        },
        slug: {
            type: DataTypes.STRING(500),
            unique: false,
            allowNull: true
        },
        tags: {
            type: DataTypes.STRING(2000),
            unique: false,
            allowNull: true
        },
        entry_html: {
            type: DataTypes.TEXT,
            unique: false,
            allowNull: true
        },
        entry_plaintext: {
            type: DataTypes.TEXT,
            unique: false,
            allowNull: true
        },
        feature_image: {
            type: DataTypes.STRING,
            unique: false,
            allowNull: true
        },
        page: {
            type: DataTypes.BOOLEAN,
            unique: false,
            allowNull: true
        },
        featured: {
            type: DataTypes.BOOLEAN,
            unique: false,
            allowNull: true
        },
        author_id: {
            type: DataTypes.INTEGER,
            unique: false,
            allowNull: true
        },
        origin_date: {
            type: DataTypes.INTEGER,
            unique: false,
            allowNull: true
        }
    }, {
        timestamps: true,

        // don't delete database entries but set the newly added attribute deletedAt
        // to the current date (when deletion was done). paranoid will only work if
        // timestamps are enabled
        paranoid: true,

        // don't use camelcase for automatically added attributes but underscore style
        // so updatedAt will be updated_at
        underscored: true,

        // disable the modification of table names; By default, sequelize will automatically
        // transform all passed model names (first parameter of define) into plural.
        // if you don't want that, set the following
        freezeTableName: false,

        // define the table's name
        tableName: 'Posts',

        // Enable optimistic locking.  When enabled, sequelize will add a version count attriubte
        // to the model and throw an OptimisticLockingError error when stale instances are saved.
        // Set to true or a string with the attribute name you want to use to enable.
        version: true
    });

    return Post;
};
