Put Person first in AP attributedTo
[oweals/peertube.git] / server / models / server / server.ts
1 import { AllowNull, Column, CreatedAt, HasMany, Is, Model, Table, UpdatedAt } from 'sequelize-typescript'
2 import { isHostValid } from '../../helpers/custom-validators/servers'
3 import { ActorModel } from '../activitypub/actor'
4 import { throwIfNotValid } from '../utils'
5
6 @Table({
7   tableName: 'server',
8   indexes: [
9     {
10       fields: [ 'host' ],
11       unique: true
12     }
13   ]
14 })
15 export class ServerModel extends Model<ServerModel> {
16
17   @AllowNull(false)
18   @Is('Host', value => throwIfNotValid(value, isHostValid, 'valid host'))
19   @Column
20   host: string
21
22   @CreatedAt
23   createdAt: Date
24
25   @UpdatedAt
26   updatedAt: Date
27
28   @HasMany(() => ActorModel, {
29     foreignKey: {
30       name: 'serverId',
31       allowNull: true
32     },
33     onDelete: 'CASCADE',
34     hooks: true
35   })
36   Actors: ActorModel[]
37 }