+import memoizee from 'memoizee'
import { AllowNull, Column, Default, DefaultScope, HasOne, IsInt, Model, Table } from 'sequelize-typescript'
+import { AttributesOnly } from '@shared/typescript-utils'
import { AccountModel } from '../account/account'
-@DefaultScope({
+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,
+ model: AccountModel,
required: true
}
]
-})
+}))
@Table({
- tableName: 'application'
+ tableName: 'application',
+ timestamps: false
})
-export class ApplicationModel extends Model<ApplicationModel> {
+export class ApplicationModel extends Model<Partial<AttributesOnly<ApplicationModel>>> {
@AllowNull(false)
@Default(0)
@Column
migrationVersion: number
+ @AllowNull(true)
+ @Column
+ latestPeerTubeVersion: string
+
@HasOne(() => AccountModel, {
foreignKey: {
allowNull: true