X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fapplication%2Fapplication.ts;h=5531d134a1b6f67c14b6b9bc2b8483cccb2eb90d;hb=16c016e8b1d5ca46343d3363f9a49e24c5d7c944;hp=507b7a84351919a73cc46ceb29c5c1efd1977254;hpb=6fcd19ba737f1f5614a56c6925adb882dea43b8d;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/application/application.ts b/server/models/application/application.ts index 507b7a843..5531d134a 100644 --- a/server/models/application/application.ts +++ b/server/models/application/application.ts @@ -1,52 +1,55 @@ -import * as Sequelize from 'sequelize' +import * as memoizee from 'memoizee' +import { AllowNull, Column, Default, DefaultScope, HasOne, IsInt, Model, Table } from 'sequelize-typescript' +import { AttributesOnly } from '@shared/core-utils' +import { AccountModel } from '../account/account' -import { addMethodsToModel } from '../utils' -import { - ApplicationAttributes, - ApplicationInstance, +export const getServerActor = memoizee(async function () { + const application = await ApplicationModel.load() + if (!application) throw Error('Could not load Application from database.') - ApplicationMethods -} from './application-interface' + const actor = application.Account.Actor + actor.Account = application.Account -let Application: Sequelize.Model -let loadMigrationVersion: ApplicationMethods.LoadMigrationVersion -let updateMigrationVersion: ApplicationMethods.UpdateMigrationVersion + return actor +}, { promise: true }) -export default function defineApplication (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) { - Application = sequelize.define('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 () { - const query = { - attributes: [ 'migrationVersion' ] + ] +})) +@Table({ + tableName: 'application', + timestamps: false +}) +export class ApplicationModel extends Model>> { + + @AllowNull(false) + @Default(0) + @IsInt + @Column + migrationVersion: number + + @AllowNull(true) + @Column + latestPeerTubeVersion: string + + @HasOne(() => AccountModel, { + foreignKey: { + allowNull: true + }, + onDelete: 'cascade' + }) + Account: AccountModel + + static countTotal () { + return ApplicationModel.count() } - return Application.findOne(query).then(data => data ? data.migrationVersion : null) -} - -updateMigrationVersion = function (newVersion: number, transaction: Sequelize.Transaction) { - const options: Sequelize.UpdateOptions = { - where: {}, - transaction: transaction + static load () { + return ApplicationModel.findOne() } - - return Application.update({ migrationVersion: newVersion }, options) }