X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fapplication%2Fapplication.ts;h=3bba2c70e3600476dc7d22693e3f0f9e747eb20b;hb=8adf0a767f0816465ac3a8f4a6c63f53dd05fe3d;hp=9fc07e8505c311c33667e53e7d0ab218ecf8fa3d;hpb=d48ff09d27d234425c3e9f091ae9072d8e6d8b7a;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/application/application.ts b/server/models/application/application.ts index 9fc07e850..3bba2c70e 100644 --- a/server/models/application/application.ts +++ b/server/models/application/application.ts @@ -1,7 +1,28 @@ -import { AllowNull, Column, Default, IsInt, Model, Table } from 'sequelize-typescript' +import { AllowNull, Column, Default, DefaultScope, HasOne, IsInt, Model, Table } from 'sequelize-typescript' +import { AccountModel } from '../account/account' +import * as memoizee from 'memoizee' +export const getServerActor = memoizee(async function () { + const application = await ApplicationModel.load() + if (!application) throw Error('Could not load Application from database.') + + const actor = application.Account.Actor + actor.Account = application.Account + + return actor +}, { promise: true }) + +@DefaultScope(() => ({ + include: [ + { + model: AccountModel, + required: true + } + ] +})) @Table({ - tableName: 'application' + tableName: 'application', + timestamps: false }) export class ApplicationModel extends Model { @@ -11,7 +32,19 @@ export class ApplicationModel extends Model { @Column migrationVersion: number + @HasOne(() => AccountModel, { + foreignKey: { + allowNull: true + }, + onDelete: 'cascade' + }) + Account: AccountModel + static countTotal () { return ApplicationModel.count() } + + static load () { + return ApplicationModel.findOne() + } }