diff options
Diffstat (limited to 'server/models/abuse/abuse-message.ts')
-rw-r--r-- | server/models/abuse/abuse-message.ts | 114 |
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 @@ | |||
1 | import { FindOptions } from 'sequelize' | ||
2 | import { AllowNull, BelongsTo, Column, CreatedAt, DataType, ForeignKey, Is, Model, Table, UpdatedAt } from 'sequelize-typescript' | ||
3 | import { isAbuseMessageValid } from '@server/helpers/custom-validators/abuses' | ||
4 | import { MAbuseMessage, MAbuseMessageFormattable } from '@server/types/models' | ||
5 | import { AbuseMessage } from '@shared/models' | ||
6 | import { AttributesOnly } from '@shared/typescript-utils' | ||
7 | import { AccountModel, ScopeNames as AccountScopeNames } from '../account/account' | ||
8 | import { getSort, throwIfNotValid } from '../shared' | ||
9 | import { AbuseModel } from './abuse' | ||
10 | |||
11 | @Table({ | ||
12 | tableName: 'abuseMessage', | ||
13 | indexes: [ | ||
14 | { | ||
15 | fields: [ 'abuseId' ] | ||
16 | }, | ||
17 | { | ||
18 | fields: [ 'accountId' ] | ||
19 | } | ||
20 | ] | ||
21 | }) | ||
22 | export 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 | } | ||