X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fserver%2Fserver.ts;h=ef42de09063b0f5ed7bf9d511e7d7d01c4fe65cf;hb=70c6a848a43868d826453da11d212fa96956fb0c;hp=1d211f1e06b2619bd6a4142c31bfd0852d3b0792;hpb=bfbd912886eba17b4aa9a40dcef2fddc685d85bf;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/server/server.ts b/server/models/server/server.ts index 1d211f1e0..ef42de090 100644 --- a/server/models/server/server.ts +++ b/server/models/server/server.ts @@ -1,8 +1,10 @@ +import { Transaction } from 'sequelize' import { AllowNull, Column, CreatedAt, Default, HasMany, Is, Model, Table, UpdatedAt } from 'sequelize-typescript' +import { MServer, MServerFormattable } from '@server/types/models/server' +import { AttributesOnly } from '@shared/typescript-utils' import { isHostValid } from '../../helpers/custom-validators/servers' -import { ActorModel } from '../activitypub/actor' +import { ActorModel } from '../actor/actor' import { throwIfNotValid } from '../utils' -import { AccountBlocklistModel } from '../account/account-blocklist' import { ServerBlocklistModel } from './server-blocklist' @Table({ @@ -14,7 +16,7 @@ import { ServerBlocklistModel } from './server-blocklist' } ] }) -export class ServerModel extends Model { +export class ServerModel extends Model>> { @AllowNull(false) @Is('Host', value => throwIfNotValid(value, isHostValid, 'valid host')) @@ -48,9 +50,20 @@ export class ServerModel extends Model { }, onDelete: 'CASCADE' }) - BlockedByAccounts: ServerBlocklistModel[] + BlockedBy: ServerBlocklistModel[] - static loadByHost (host: string) { + static load (id: number, transaction?: Transaction): Promise { + const query = { + where: { + id + }, + transaction + } + + return ServerModel.findOne(query) + } + + static loadByHost (host: string): Promise { const query = { where: { host @@ -60,11 +73,18 @@ export class ServerModel extends Model { return ServerModel.findOne(query) } + static async loadOrCreateByHost (host: string) { + let server = await ServerModel.loadByHost(host) + if (!server) server = await ServerModel.create({ host }) + + return server + } + isBlocked () { - return this.BlockedByAccounts && this.BlockedByAccounts.length !== 0 + return this.BlockedBy && this.BlockedBy.length !== 0 } - toFormattedJSON () { + toFormattedJSON (this: MServerFormattable) { return { host: this.host }