]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/application/application.ts
Fix createdAt/updatedAt issues
[github/Chocobozzz/PeerTube.git] / server / models / application / application.ts
index 0e9a1ebb3045c331b01eea8aef76af95b7100ef7..81320b9afeafae058c72947b2c3b1accca5b06b0 100644 (file)
@@ -1,57 +1,39 @@
-import * as Sequelize from 'sequelize'
+import { AllowNull, Column, Default, DefaultScope, HasOne, IsInt, Model, Table } from 'sequelize-typescript'
+import { AccountModel } from '../account/account'
 
-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',
+@DefaultScope(() => ({
+  include: [
     {
-      migrationVersion: {
-        type: DataTypes.INTEGER,
-        defaultValue: 0,
-        allowNull: false,
-        validate: {
-          isInt: true
-        }
-      }
+      model: AccountModel,
+      required: true
     }
-  )
-
-  const classMethods = [ loadMigrationVersion, updateMigrationVersion ]
-  addMethodsToModel(Application, classMethods)
-
-  return Application
-}
-
-// ---------------------------------------------------------------------------
-
-loadMigrationVersion = function (callback: ApplicationMethods.LoadMigrationVersionCallback) {
-  const query = {
-    attributes: [ 'migrationVersion' ]
-  }
-
-  return Application.findOne(query).asCallback(function (err, data) {
-    const version = data ? data.migrationVersion : null
-
-    return callback(err, version)
+  ]
+}))
+@Table({
+  tableName: 'application',
+  timestamps: false
+})
+export class ApplicationModel extends Model<ApplicationModel> {
+
+  @AllowNull(false)
+  @Default(0)
+  @IsInt
+  @Column
+  migrationVersion: number
+
+  @HasOne(() => AccountModel, {
+    foreignKey: {
+      allowNull: true
+    },
+    onDelete: 'cascade'
   })
-}
+  Account: AccountModel
 
-updateMigrationVersion = function (newVersion: number, transaction: Sequelize.Transaction, callback: ApplicationMethods.UpdateMigrationVersionCallback) {
-  const options: Sequelize.UpdateOptions = {
-    where: {},
-    transaction: transaction
+  static countTotal () {
+    return ApplicationModel.count()
   }
 
-  return Application.update({ migrationVersion: newVersion }, options).asCallback(callback)
+  static load () {
+    return ApplicationModel.findOne()
+  }
 }