]>
Commit | Line | Data |
---|---|---|
e02643f3 C |
1 | import * as Sequelize from 'sequelize' |
2 | ||
3 | import { addMethodsToModel } from './utils' | |
4 | import { | |
5 | ApplicationClass, | |
6 | ApplicationAttributes, | |
7 | ApplicationInstance, | |
8 | ||
9 | ApplicationMethods | |
10 | } from './application-interface' | |
11 | ||
12 | let Application: Sequelize.Model<ApplicationInstance, ApplicationAttributes> | |
13 | let loadMigrationVersion: ApplicationMethods.LoadMigrationVersion | |
14 | let updateMigrationVersion: ApplicationMethods.UpdateMigrationVersion | |
15 | ||
16 | export default function defineApplication (sequelize: Sequelize.Sequelize, DataTypes) { | |
17 | Application = sequelize.define<ApplicationInstance, ApplicationAttributes>('Application', | |
feb4bdfd | 18 | { |
b769007f | 19 | migrationVersion: { |
feb4bdfd | 20 | type: DataTypes.INTEGER, |
67bf9b96 C |
21 | defaultValue: 0, |
22 | allowNull: false, | |
23 | validate: { | |
24 | isInt: true | |
25 | } | |
feb4bdfd | 26 | } |
feb4bdfd C |
27 | } |
28 | ) | |
29 | ||
e02643f3 C |
30 | const classMethods = [ loadMigrationVersion, updateMigrationVersion ] |
31 | addMethodsToModel(Application, classMethods) | |
32 | ||
feb4bdfd C |
33 | return Application |
34 | } | |
00d6b0dd C |
35 | |
36 | // --------------------------------------------------------------------------- | |
37 | ||
69818c93 | 38 | loadMigrationVersion = function (callback: ApplicationMethods.LoadMigrationVersionCallback) { |
feb4bdfd | 39 | const query = { |
b769007f | 40 | attributes: [ 'migrationVersion' ] |
00d6b0dd | 41 | } |
00d6b0dd | 42 | |
e02643f3 | 43 | return Application.findOne(query).asCallback(function (err, data) { |
ed708d62 | 44 | const version = data ? data.migrationVersion : null |
00d6b0dd C |
45 | |
46 | return callback(err, version) | |
47 | }) | |
48 | } | |
49 | ||
69818c93 | 50 | updateMigrationVersion = function (newVersion: number, transaction: Sequelize.Transaction, callback: ApplicationMethods.UpdateMigrationVersionCallback) { |
e02643f3 | 51 | const options: Sequelize.UpdateOptions = { |
69818c93 C |
52 | where: {}, |
53 | transaction: transaction | |
b769007f C |
54 | } |
55 | ||
e02643f3 | 56 | return Application.update({ migrationVersion: newVersion }, options).asCallback(callback) |
00d6b0dd | 57 | } |