1
0
Fork 0

Fix abuse/registration requests stats

With old abuses/registration requests that do not have the processedAt
attribute set
This commit is contained in:
Chocobozzz 2024-02-27 15:26:37 +01:00
parent b6b1aaa56f
commit 2e760485c1
No known key found for this signature in database
GPG key ID: 583A612D890159BE
2 changed files with 7 additions and 4 deletions

View file

@ -10,7 +10,8 @@ import {
AdminVideoCommentAbuse, AdminVideoCommentAbuse,
UserAbuse, UserAbuse,
UserVideoAbuse, UserVideoAbuse,
type AbuseStateType type AbuseStateType,
AbuseState
} from '@peertube/peertube-models' } from '@peertube/peertube-models'
import { isAbuseModerationCommentValid, isAbuseReasonValid, isAbuseStateValid } from '@server/helpers/custom-validators/abuses.js' import { isAbuseModerationCommentValid, isAbuseReasonValid, isAbuseStateValid } from '@server/helpers/custom-validators/abuses.js'
import invert from 'lodash-es/invert.js' import invert from 'lodash-es/invert.js'
@ -449,7 +450,8 @@ export class AbuseModel extends SequelizeModel<AbuseModel> {
`AVG(EXTRACT(EPOCH FROM ("processedAt" - "createdAt") * 1000)) ` + `AVG(EXTRACT(EPOCH FROM ("processedAt" - "createdAt") * 1000)) ` +
`FILTER (WHERE "processedAt" IS NOT NULL AND "createdAt" > CURRENT_DATE - INTERVAL '3 months')` + `FILTER (WHERE "processedAt" IS NOT NULL AND "createdAt" > CURRENT_DATE - INTERVAL '3 months')` +
`AS "avgResponseTime", ` + `AS "avgResponseTime", ` +
`COUNT(*) FILTER (WHERE "processedAt" IS NOT NULL) AS "processedAbuses", ` + // "processedAt" has been introduced in PeerTube 6.1 so also check the abuse state to check processed abuses
`COUNT(*) FILTER (WHERE "processedAt" IS NOT NULL OR "state" != ${AbuseState.PENDING}) AS "processedAbuses", ` +
`COUNT(*) AS "totalAbuses" ` + `COUNT(*) AS "totalAbuses" ` +
`FROM "abuse"` `FROM "abuse"`

View file

@ -1,4 +1,4 @@
import { UserRegistration, type UserRegistrationStateType } from '@peertube/peertube-models' import { UserRegistration, UserRegistrationState, type UserRegistrationStateType } from '@peertube/peertube-models'
import { import {
isRegistrationModerationResponseValid, isRegistrationModerationResponseValid,
isRegistrationReasonValid, isRegistrationReasonValid,
@ -234,7 +234,8 @@ export class UserRegistrationModel extends SequelizeModel<UserRegistrationModel>
`AVG(EXTRACT(EPOCH FROM ("processedAt" - "createdAt") * 1000)) ` + `AVG(EXTRACT(EPOCH FROM ("processedAt" - "createdAt") * 1000)) ` +
`FILTER (WHERE "processedAt" IS NOT NULL AND "createdAt" > CURRENT_DATE - INTERVAL '3 months')` + `FILTER (WHERE "processedAt" IS NOT NULL AND "createdAt" > CURRENT_DATE - INTERVAL '3 months')` +
`AS "avgResponseTime", ` + `AS "avgResponseTime", ` +
`COUNT(*) FILTER (WHERE "processedAt" IS NOT NULL) AS "processedRequests", ` + // "processedAt" has been introduced in PeerTube 6.1 so also check the abuse state to check processed abuses
`COUNT(*) FILTER (WHERE "processedAt" IS NOT NULL OR "state" != ${UserRegistrationState.PENDING}) AS "processedRequests", ` +
`COUNT(*) AS "totalRequests" ` + `COUNT(*) AS "totalRequests" ` +
`FROM "userRegistration"` `FROM "userRegistration"`