]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/application.ts
Better models define typing
[github/Chocobozzz/PeerTube.git] / server / models / application.ts
index 38a57e3275ab3108ec12793a83261a38248640eb..55bb40d840de3178249ddbd0392354a9f9f0a14f 100644 (file)
@@ -1,5 +1,20 @@
-module.exports = function (sequelize, DataTypes) {
-  const Application = sequelize.define('Application',
+import * as Sequelize from 'sequelize'
+
+import { addMethodsToModel } from './utils'
+import {
+  ApplicationClass,
+  ApplicationAttributes,
+  ApplicationInstance,
+
+  ApplicationMethods
+} from './application-interface'
+
+let Application: Sequelize.Model<ApplicationInstance, ApplicationAttributes>
+let loadMigrationVersion: ApplicationMethods.LoadMigrationVersion
+let updateMigrationVersion: ApplicationMethods.UpdateMigrationVersion
+
+export default function defineApplication (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) {
+  Application = sequelize.define<ApplicationInstance, ApplicationAttributes>('Application',
     {
       migrationVersion: {
         type: DataTypes.INTEGER,
@@ -9,42 +24,34 @@ module.exports = function (sequelize, DataTypes) {
           isInt: true
         }
       }
-    },
-    {
-      classMethods: {
-        loadMigrationVersion,
-        updateMigrationVersion
-      }
     }
   )
 
+  const classMethods = [ loadMigrationVersion, updateMigrationVersion ]
+  addMethodsToModel(Application, classMethods)
+
   return Application
 }
 
 // ---------------------------------------------------------------------------
 
-function loadMigrationVersion (callback) {
+loadMigrationVersion = function (callback: ApplicationMethods.LoadMigrationVersionCallback) {
   const query = {
     attributes: [ 'migrationVersion' ]
   }
 
-  return this.findOne(query).asCallback(function (err, data) {
+  return Application.findOne(query).asCallback(function (err, data) {
     const version = data ? data.migrationVersion : null
 
     return callback(err, version)
   })
 }
 
-function updateMigrationVersion (newVersion, transaction, callback) {
-  const options: { where?: any, transaction?: any } = {
-    where: {}
-  }
-
-  if (!callback) {
-    transaction = callback
-  } else {
-    options.transaction = transaction
+updateMigrationVersion = function (newVersion: number, transaction: Sequelize.Transaction, callback: ApplicationMethods.UpdateMigrationVersionCallback) {
+  const options: Sequelize.UpdateOptions = {
+    where: {},
+    transaction: transaction
   }
 
-  return this.update({ migrationVersion: newVersion }, options).asCallback(callback)
+  return Application.update({ migrationVersion: newVersion }, options).asCallback(callback)
 }