aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/models/abuse/abuse-message.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/models/abuse/abuse-message.ts')
-rw-r--r--server/models/abuse/abuse-message.ts114
1 files changed, 0 insertions, 114 deletions
diff --git a/server/models/abuse/abuse-message.ts b/server/models/abuse/abuse-message.ts
deleted file mode 100644
index 14a5bffa2..000000000
--- a/server/models/abuse/abuse-message.ts
+++ /dev/null
@@ -1,114 +0,0 @@
1import { FindOptions } from 'sequelize'
2import { AllowNull, BelongsTo, Column, CreatedAt, DataType, ForeignKey, Is, Model, Table, UpdatedAt } from 'sequelize-typescript'
3import { isAbuseMessageValid } from '@server/helpers/custom-validators/abuses'
4import { MAbuseMessage, MAbuseMessageFormattable } from '@server/types/models'
5import { AbuseMessage } from '@shared/models'
6import { AttributesOnly } from '@shared/typescript-utils'
7import { AccountModel, ScopeNames as AccountScopeNames } from '../account/account'
8import { getSort, throwIfNotValid } from '../shared'
9import { AbuseModel } from './abuse'
10
11@Table({
12 tableName: 'abuseMessage',
13 indexes: [
14 {
15 fields: [ 'abuseId' ]
16 },
17 {
18 fields: [ 'accountId' ]
19 }
20 ]
21})
22export class AbuseMessageModel extends Model<Partial<AttributesOnly<AbuseMessageModel>>> {
23
24 @AllowNull(false)
25 @Is('AbuseMessage', value => throwIfNotValid(value, isAbuseMessageValid, 'message'))
26 @Column(DataType.TEXT)
27 message: string
28
29 @AllowNull(false)
30 @Column
31 byModerator: boolean
32
33 @CreatedAt
34 createdAt: Date
35
36 @UpdatedAt
37 updatedAt: Date
38
39 @ForeignKey(() => AccountModel)
40 @Column
41 accountId: number
42
43 @BelongsTo(() => AccountModel, {
44 foreignKey: {
45 name: 'accountId',
46 allowNull: true
47 },
48 onDelete: 'set null'
49 })
50 Account: AccountModel
51
52 @ForeignKey(() => AbuseModel)
53 @Column
54 abuseId: number
55
56 @BelongsTo(() => AbuseModel, {
57 foreignKey: {
58 name: 'abuseId',
59 allowNull: false
60 },
61 onDelete: 'cascade'
62 })
63 Abuse: AbuseModel
64
65 static listForApi (abuseId: number) {
66 const getQuery = (forCount: boolean) => {
67 const query: FindOptions = {
68 where: { abuseId },
69 order: getSort('createdAt')
70 }
71
72 if (forCount !== true) {
73 query.include = [
74 {
75 model: AccountModel.scope(AccountScopeNames.SUMMARY),
76 required: false
77 }
78 ]
79 }
80
81 return query
82 }
83
84 return Promise.all([
85 AbuseMessageModel.count(getQuery(true)),
86 AbuseMessageModel.findAll(getQuery(false))
87 ]).then(([ total, data ]) => ({ total, data }))
88 }
89
90 static loadByIdAndAbuseId (messageId: number, abuseId: number): Promise<MAbuseMessage> {
91 return AbuseMessageModel.findOne({
92 where: {
93 id: messageId,
94 abuseId
95 }
96 })
97 }
98
99 toFormattedJSON (this: MAbuseMessageFormattable): AbuseMessage {
100 const account = this.Account
101 ? this.Account.toFormattedSummaryJSON()
102 : null
103
104 return {
105 id: this.id,
106 createdAt: this.createdAt,
107
108 byModerator: this.byModerator,
109 message: this.message,
110
111 account
112 }
113 }
114}