]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/models/application/application.ts
Add follow tabs
[github/Chocobozzz/PeerTube.git] / server / models / application / application.ts
1 import * as Sequelize from 'sequelize'
2
3 import { addMethodsToModel } from '../utils'
4 import {
5 ApplicationAttributes,
6 ApplicationInstance,
7
8 ApplicationMethods
9 } from './application-interface'
10
11 let Application: Sequelize.Model<ApplicationInstance, ApplicationAttributes>
12 let loadMigrationVersion: ApplicationMethods.LoadMigrationVersion
13 let updateMigrationVersion: ApplicationMethods.UpdateMigrationVersion
14 let countTotal: ApplicationMethods.CountTotal
15
16 export default function defineApplication (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) {
17 Application = sequelize.define<ApplicationInstance, ApplicationAttributes>('Application',
18 {
19 migrationVersion: {
20 type: DataTypes.INTEGER,
21 defaultValue: 0,
22 allowNull: false,
23 validate: {
24 isInt: true
25 }
26 }
27 }
28 )
29
30 const classMethods = [
31 countTotal,
32 loadMigrationVersion,
33 updateMigrationVersion
34 ]
35 addMethodsToModel(Application, classMethods)
36
37 return Application
38 }
39
40 // ---------------------------------------------------------------------------
41
42 countTotal = function () {
43 return this.count()
44 }
45
46 loadMigrationVersion = function () {
47 const query = {
48 attributes: [ 'migrationVersion' ]
49 }
50
51 return Application.findOne(query).then(data => data ? data.migrationVersion : null)
52 }
53
54 updateMigrationVersion = function (newVersion: number, transaction: Sequelize.Transaction) {
55 const options: Sequelize.UpdateOptions = {
56 where: {},
57 transaction: transaction
58 }
59
60 return Application.update({ migrationVersion: newVersion }, options)
61 }