1 import * as Sequelize from 'sequelize'
3 import { addMethodsToModel } from '../utils'
9 } from './application-interface'
11 let Application: Sequelize.Model<ApplicationInstance, ApplicationAttributes>
12 let loadMigrationVersion: ApplicationMethods.LoadMigrationVersion
13 let updateMigrationVersion: ApplicationMethods.UpdateMigrationVersion
14 let countTotal: ApplicationMethods.CountTotal
16 export default function defineApplication (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) {
17 Application = sequelize.define<ApplicationInstance, ApplicationAttributes>('Application',
20 type: DataTypes.INTEGER,
30 const classMethods = [
33 updateMigrationVersion
35 addMethodsToModel(Application, classMethods)
40 // ---------------------------------------------------------------------------
42 countTotal = function () {
46 loadMigrationVersion = function () {
48 attributes: [ 'migrationVersion' ]
51 return Application.findOne(query).then(data => data ? data.migrationVersion : null)
54 updateMigrationVersion = function (newVersion: number, transaction: Sequelize.Transaction) {
55 const options: Sequelize.UpdateOptions = {
57 transaction: transaction
60 return Application.update({ migrationVersion: newVersion }, options)