]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/models/application.ts
BaseRequestScheduler -> AbstractRequestScheduler
[github/Chocobozzz/PeerTube.git] / server / models / application.ts
CommitLineData
e02643f3
C
1import * as Sequelize from 'sequelize'
2
3import { addMethodsToModel } from './utils'
4import {
5 ApplicationClass,
6 ApplicationAttributes,
7 ApplicationInstance,
8
9 ApplicationMethods
10} from './application-interface'
11
12let Application: Sequelize.Model<ApplicationInstance, ApplicationAttributes>
13let loadMigrationVersion: ApplicationMethods.LoadMigrationVersion
14let updateMigrationVersion: ApplicationMethods.UpdateMigrationVersion
15
127944aa 16export default function defineApplication (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) {
e02643f3 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 38loadMigrationVersion = 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 50updateMigrationVersion = 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}