You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
main
${ noResults }
85 lines
1.9 KiB
TypeScript
85 lines
1.9 KiB
TypeScript
import { getNodeABIVersion } from '@server/helpers/version.js'
|
|||
import memoizee from 'memoizee'
|
|||
import { AllowNull, Column, Default, DefaultScope, HasOne, IsInt, Table } from 'sequelize-typescript'
|
|||
import { AccountModel } from '../account/account.js'
|
|||
import { ActorImageModel } from '../actor/actor-image.js'
|
|||
import { SequelizeModel } from '../shared/index.js'
|
|||
|
|||
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
|
|||
|
|||
const { avatars, banners } = await ActorImageModel.listActorImages(actor)
|
|||
actor.Avatars = avatars
|
|||
actor.Banners = banners
|
|||
|
|||
return actor
|
|||
}, { promise: true })
|
|||
|
|||
@DefaultScope(() => ({
|
|||
include: [
|
|||
{
|
|||
model: AccountModel,
|
|||
required: true
|
|||
}
|
|||
]
|
|||
}))
|
|||
@Table({
|
|||
tableName: 'application',
|
|||
timestamps: false
|
|||
})
|
|||
export class ApplicationModel extends SequelizeModel<ApplicationModel> {
|
|||
|
|||
@AllowNull(false)
|
|||
@Default(0)
|
|||
@IsInt
|
|||
@Column
|
|||
migrationVersion: number
|
|||
|
|||
@AllowNull(true)
|
|||
@Column
|
|||
latestPeerTubeVersion: string
|
|||
|
|||
@AllowNull(false)
|
|||
@Column
|
|||
nodeVersion: string
|
|||
|
|||
@AllowNull(false)
|
|||
@Column
|
|||
nodeABIVersion: number
|
|||
|
|||
@HasOne(() => AccountModel, {
|
|||
foreignKey: {
|
|||
allowNull: true
|
|||
},
|
|||
onDelete: 'cascade'
|
|||
})
|
|||
Account: Awaited<AccountModel>
|
|||
|
|||
static countTotal () {
|
|||
return ApplicationModel.count()
|
|||
}
|
|||
|
|||
static load () {
|
|||
return ApplicationModel.findOne()
|
|||
}
|
|||
|
|||
static async nodeABIChanged () {
|
|||
const application = await this.load()
|
|||
|
|||
return application.nodeABIVersion !== getNodeABIVersion()
|
|||
}
|
|||
|
|||
static async updateNodeVersions () {
|
|||
const application = await this.load()
|
|||
|
|||
application.nodeABIVersion = getNodeABIVersion()
|
|||
application.nodeVersion = process.version
|
|||
|
|||
await application.save()
|
|||
}
|
|||
}
|