X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fserver%2Fserver.ts;h=8b07115f1f810a43c0403f7ef7b75b3702ff64a0;hb=a30a136c9896c656cab98d2c92cde32c534dc098;hp=9749f503e30e7782f0ea3bf12a0dd62ed2829c12;hpb=f05a1c30c15d2ae35c11e241ca039a72eeb7d6ad;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/server/server.ts b/server/models/server/server.ts index 9749f503e..8b07115f1 100644 --- a/server/models/server/server.ts +++ b/server/models/server/server.ts @@ -1,7 +1,10 @@ -import { AllowNull, Column, CreatedAt, HasMany, Is, Model, Table, UpdatedAt } from 'sequelize-typescript' +import { AllowNull, Column, CreatedAt, Default, HasMany, Is, Model, Table, UpdatedAt } from 'sequelize-typescript' import { isHostValid } from '../../helpers/custom-validators/servers' import { ActorModel } from '../activitypub/actor' import { throwIfNotValid } from '../utils' +import { ServerBlocklistModel } from './server-blocklist' +import * as Bluebird from 'bluebird' +import { MServer, MServerFormattable } from '@server/typings/models/server' @Table({ tableName: 'server', @@ -19,6 +22,11 @@ export class ServerModel extends Model { @Column host: string + @AllowNull(false) + @Default(false) + @Column + redundancyAllowed: boolean + @CreatedAt createdAt: Date @@ -34,4 +42,42 @@ export class ServerModel extends Model { hooks: true }) Actors: ActorModel[] + + @HasMany(() => ServerBlocklistModel, { + foreignKey: { + allowNull: false + }, + onDelete: 'CASCADE' + }) + BlockedByAccounts: ServerBlocklistModel[] + + static load (id: number): Bluebird { + const query = { + where: { + id + } + } + + return ServerModel.findOne(query) + } + + static loadByHost (host: string): Bluebird { + const query = { + where: { + host + } + } + + return ServerModel.findOne(query) + } + + isBlocked () { + return this.BlockedByAccounts && this.BlockedByAccounts.length !== 0 + } + + toFormattedJSON (this: MServerFormattable) { + return { + host: this.host + } + } }