]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/server/server.ts
Fix tests
[github/Chocobozzz/PeerTube.git] / server / models / server / server.ts
index 8b07115f1f810a43c0403f7ef7b75b3702ff64a0..ef42de09063b0f5ed7bf9d511e7d7d01c4fe65cf 100644 (file)
@@ -1,10 +1,11 @@
+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 { ServerBlocklistModel } from './server-blocklist'
-import * as Bluebird from 'bluebird'
-import { MServer, MServerFormattable } from '@server/typings/models/server'
 
 @Table({
   tableName: 'server',
@@ -15,7 +16,7 @@ import { MServer, MServerFormattable } from '@server/typings/models/server'
     }
   ]
 })
-export class ServerModel extends Model<ServerModel> {
+export class ServerModel extends Model<Partial<AttributesOnly<ServerModel>>> {
 
   @AllowNull(false)
   @Is('Host', value => throwIfNotValid(value, isHostValid, 'valid host'))
@@ -49,19 +50,20 @@ export class ServerModel extends Model<ServerModel> {
     },
     onDelete: 'CASCADE'
   })
-  BlockedByAccounts: ServerBlocklistModel[]
+  BlockedBy: ServerBlocklistModel[]
 
-  static load (id: number): Bluebird<MServer> {
+  static load (id: number, transaction?: Transaction): Promise<MServer> {
     const query = {
       where: {
         id
-      }
+      },
+      transaction
     }
 
     return ServerModel.findOne(query)
   }
 
-  static loadByHost (host: string): Bluebird<MServer> {
+  static loadByHost (host: string): Promise<MServer> {
     const query = {
       where: {
         host
@@ -71,8 +73,15 @@ export class ServerModel extends Model<ServerModel> {
     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 (this: MServerFormattable) {