]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/server/server.ts
Refactor markdown/sanitize html code
[github/Chocobozzz/PeerTube.git] / server / models / server / server.ts
index b0bdd2b0bcb4316e38b08d8fca33175b35ad80a1..7712007971b7bd2108749642788a94687cb3556d 100644 (file)
@@ -4,7 +4,7 @@ import { ActorModel } from '../activitypub/actor'
 import { throwIfNotValid } from '../utils'
 import { ServerBlocklistModel } from './server-blocklist'
 import * as Bluebird from 'bluebird'
-import { MServer } from '@server/typings/models/server'
+import { MServer, MServerFormattable } from '@server/types/models/server'
 
 @Table({
   tableName: 'server',
@@ -51,6 +51,16 @@ export class ServerModel extends Model<ServerModel> {
   })
   BlockedByAccounts: ServerBlocklistModel[]
 
+  static load (id: number): Bluebird<MServer> {
+    const query = {
+      where: {
+        id
+      }
+    }
+
+    return ServerModel.findOne(query)
+  }
+
   static loadByHost (host: string): Bluebird<MServer> {
     const query = {
       where: {
@@ -61,11 +71,18 @@ 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
   }
 
-  toFormattedJSON () {
+  toFormattedJSON (this: MServerFormattable) {
     return {
       host: this.host
     }