1 import * as Sequelize from 'sequelize'
3 import { addMethodsToModel } from './utils'
10 } from './application-interface'
12 let Application: Sequelize.Model<ApplicationInstance, ApplicationAttributes>
13 let loadMigrationVersion: ApplicationMethods.LoadMigrationVersion
14 let updateMigrationVersion: ApplicationMethods.UpdateMigrationVersion
16 export default function defineApplication (sequelize: Sequelize.Sequelize, DataTypes) {
17 Application = sequelize.define<ApplicationInstance, ApplicationAttributes>('Application',
20 type: DataTypes.INTEGER,
30 const classMethods = [ loadMigrationVersion, updateMigrationVersion ]
31 addMethodsToModel(Application, classMethods)
36 // ---------------------------------------------------------------------------
38 loadMigrationVersion = function (callback: (err: Error, version: number) => void) {
40 attributes: [ 'migrationVersion' ]
43 return Application.findOne(query).asCallback(function (err, data) {
44 const version = data ? data.migrationVersion : null
46 return callback(err, version)
50 updateMigrationVersion = function (newVersion: number, transaction: any, callback: any) {
51 const options: Sequelize.UpdateOptions = {
56 transaction = callback
58 options.transaction = transaction
61 return Application.update({ migrationVersion: newVersion }, options).asCallback(callback)