@atproto/ozone 0.2.9 → 0.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/package.json +25 -21
- package/bin/migration-create.ts +0 -38
- package/jest.config.cjs +0 -22
- package/src/api/chat/getActorMetadata.ts +0 -23
- package/src/api/chat/getConvo.ts +0 -23
- package/src/api/chat/getConvoMembers.ts +0 -23
- package/src/api/chat/getConvos.ts +0 -23
- package/src/api/chat/getMessageContext.ts +0 -42
- package/src/api/chat/index.ts +0 -16
- package/src/api/communication/createTemplate.ts +0 -51
- package/src/api/communication/deleteTemplate.ts +0 -23
- package/src/api/communication/listTemplates.ts +0 -31
- package/src/api/communication/updateTemplate.ts +0 -51
- package/src/api/health.ts +0 -27
- package/src/api/index.ts +0 -146
- package/src/api/label/fetchLabels.ts +0 -32
- package/src/api/label/queryLabels.ts +0 -57
- package/src/api/label/subscribeLabels.ts +0 -25
- package/src/api/moderation/cancelScheduledActions.ts +0 -72
- package/src/api/moderation/emitEvent.ts +0 -475
- package/src/api/moderation/getAccountTimeline.ts +0 -160
- package/src/api/moderation/getEvent.ts +0 -19
- package/src/api/moderation/getRecord.ts +0 -40
- package/src/api/moderation/getRecords.ts +0 -50
- package/src/api/moderation/getRepo.ts +0 -34
- package/src/api/moderation/getReporterStats.ts +0 -18
- package/src/api/moderation/getRepos.ts +0 -41
- package/src/api/moderation/getSubjects.ts +0 -101
- package/src/api/moderation/listScheduledActions.ts +0 -45
- package/src/api/moderation/queryEvents.ts +0 -72
- package/src/api/moderation/queryStatuses.ts +0 -23
- package/src/api/moderation/scheduleAction.ts +0 -129
- package/src/api/moderation/searchRepos.ts +0 -46
- package/src/api/moderation/util.ts +0 -96
- package/src/api/proxied.ts +0 -327
- package/src/api/queue/assignModerator.ts +0 -31
- package/src/api/queue/createQueue.ts +0 -62
- package/src/api/queue/deleteQueue.ts +0 -56
- package/src/api/queue/getAssignments.ts +0 -19
- package/src/api/queue/listQueues.ts +0 -39
- package/src/api/queue/routeReports.ts +0 -44
- package/src/api/queue/unassignModerator.ts +0 -26
- package/src/api/queue/updateQueue.ts +0 -54
- package/src/api/report/assignModerator.ts +0 -36
- package/src/api/report/createActivity.ts +0 -57
- package/src/api/report/createReport.ts +0 -93
- package/src/api/report/getAssignments.ts +0 -20
- package/src/api/report/getHistoricalStats.ts +0 -41
- package/src/api/report/getLatestReport.ts +0 -44
- package/src/api/report/getLiveStats.ts +0 -26
- package/src/api/report/getReport.ts +0 -55
- package/src/api/report/listActivities.ts +0 -37
- package/src/api/report/queryActivities.ts +0 -64
- package/src/api/report/queryReports.ts +0 -44
- package/src/api/report/reassignQueue.ts +0 -68
- package/src/api/report/refreshStats.ts +0 -27
- package/src/api/report/unassignModerator.ts +0 -21
- package/src/api/safelink/addRule.ts +0 -48
- package/src/api/safelink/queryEvents.ts +0 -32
- package/src/api/safelink/queryRules.ts +0 -58
- package/src/api/safelink/removeRule.ts +0 -42
- package/src/api/safelink/updateRule.ts +0 -48
- package/src/api/server/getConfig.ts +0 -35
- package/src/api/set/addValues.ts +0 -28
- package/src/api/set/deleteSet.ts +0 -34
- package/src/api/set/deleteValues.ts +0 -31
- package/src/api/set/getValues.ts +0 -42
- package/src/api/set/querySets.ts +0 -36
- package/src/api/set/upsertSet.ts +0 -38
- package/src/api/setting/listOptions.ts +0 -44
- package/src/api/setting/removeOptions.ts +0 -64
- package/src/api/setting/upsertOption.ts +0 -156
- package/src/api/team/addMember.ts +0 -51
- package/src/api/team/deleteMember.ts +0 -29
- package/src/api/team/listMembers.ts +0 -20
- package/src/api/team/updateMember.ts +0 -47
- package/src/api/util.ts +0 -265
- package/src/api/verification/grantVerifications.ts +0 -90
- package/src/api/verification/listVerifications.ts +0 -44
- package/src/api/verification/revokeVerifications.ts +0 -43
- package/src/api/well-known.ts +0 -46
- package/src/assignment/index.ts +0 -728
- package/src/auth-verifier.ts +0 -227
- package/src/background.ts +0 -183
- package/src/communication-service/template.ts +0 -110
- package/src/communication-service/util.ts +0 -8
- package/src/config/config.ts +0 -211
- package/src/config/env.ts +0 -95
- package/src/config/index.ts +0 -3
- package/src/config/secrets.ts +0 -17
- package/src/context.ts +0 -399
- package/src/daemon/blob-diverter.ts +0 -186
- package/src/daemon/context.ts +0 -247
- package/src/daemon/event-pusher.ts +0 -363
- package/src/daemon/event-reverser.ts +0 -128
- package/src/daemon/index.ts +0 -33
- package/src/daemon/job-cursor.ts +0 -33
- package/src/daemon/materialized-view-refresher.ts +0 -33
- package/src/daemon/queue-router.ts +0 -101
- package/src/daemon/scheduled-action-processor.ts +0 -304
- package/src/daemon/stats-computer.ts +0 -101
- package/src/daemon/strike-expiry-processor.ts +0 -95
- package/src/daemon/team-profile-synchronizer.ts +0 -15
- package/src/daemon/verification-listener.ts +0 -169
- package/src/db/index.ts +0 -203
- package/src/db/migrations/20231219T205730722Z-init.ts +0 -170
- package/src/db/migrations/20240116T085607200Z-communication-template.ts +0 -23
- package/src/db/migrations/20240201T051104136Z-mod-event-blobs.ts +0 -15
- package/src/db/migrations/20240208T213404429Z-add-tags-column-to-moderation-subject.ts +0 -31
- package/src/db/migrations/20240228T003647759Z-add-label-sigs.ts +0 -25
- package/src/db/migrations/20240408T192432676Z-mute-reporting.ts +0 -15
- package/src/db/migrations/20240506T225055595Z-message-subject.ts +0 -21
- package/src/db/migrations/20240521T211332580Z-member.ts +0 -17
- package/src/db/migrations/20240814T003647759Z-event-created-at-index.ts +0 -13
- package/src/db/migrations/20240903T205730722Z-add-template-lang.ts +0 -12
- package/src/db/migrations/20240904T205730722Z-add-subject-did-index.ts +0 -13
- package/src/db/migrations/20241001T205730722Z-subject-status-review-state-index.ts +0 -15
- package/src/db/migrations/20241008T205730722Z-sets.ts +0 -53
- package/src/db/migrations/20241018T205730722Z-setting.ts +0 -27
- package/src/db/migrations/20241026T205730722Z-add-hosting-status-to-subject-status.ts +0 -57
- package/src/db/migrations/20241220T144630860Z-stats-materialized-views.ts +0 -215
- package/src/db/migrations/20250204T003647759Z-add-subject-priority-score.ts +0 -22
- package/src/db/migrations/20250211T003647759Z-add-reporter-stats-index.ts +0 -38
- package/src/db/migrations/20250211T132135150Z-moderation-event-message-partial-idx.ts +0 -26
- package/src/db/migrations/20250221T132135150Z-member-details.ts +0 -14
- package/src/db/migrations/20250404T201720309Z-subject-status-sort-idxs.ts +0 -18
- package/src/db/migrations/20250415T201720309Z-verification.ts +0 -34
- package/src/db/migrations/20250417T201720309Z-firehose-cursor.ts +0 -16
- package/src/db/migrations/20250609T110704000Z-safelink.ts +0 -53
- package/src/db/migrations/20250618T180246000Z-add-mod-tool-to-moderation-event.ts +0 -18
- package/src/db/migrations/20250701T000000000Z-add-age-assurance-state.ts +0 -25
- package/src/db/migrations/20250715T000000000Z-add-mod-event-external-id.ts +0 -15
- package/src/db/migrations/20250718T150931000Z-update-appeal-reason-stats.ts +0 -310
- package/src/db/migrations/20250813T000000000Z-mod-tool-batch-id-index.ts +0 -14
- package/src/db/migrations/20250923T000000000Z-scheduled-actions.ts +0 -56
- package/src/db/migrations/20251008T120000000Z-add-strike-system.ts +0 -87
- package/src/db/migrations/20260210T154806448Z-mod-event-created-by-indexes.ts +0 -22
- package/src/db/migrations/20260219T164523000Z-create-report-table.ts +0 -155
- package/src/db/migrations/20260219T165302248Z-moderator-assignment.ts +0 -42
- package/src/db/migrations/20260225T000000000Z-add-report-queue-table.ts +0 -41
- package/src/db/migrations/20260313T000000000Z-add-report-activity-table.ts +0 -48
- package/src/db/migrations/20260318T152058935Z-add-report-stat.ts +0 -35
- package/src/db/migrations/20260428T000000000Z-add-expiring-tag-table.ts +0 -32
- package/src/db/migrations/20260513T202941104Z-add-subject-convo-id.ts +0 -114
- package/src/db/migrations/20260602T120000000Z-add-report-activity-created-index.ts +0 -17
- package/src/db/migrations/index.ts +0 -44
- package/src/db/migrations/provider.ts +0 -26
- package/src/db/pagination.ts +0 -335
- package/src/db/schema/account_events_stats.ts +0 -16
- package/src/db/schema/account_record_events_stats.ts +0 -15
- package/src/db/schema/account_record_status_stats.ts +0 -15
- package/src/db/schema/account_strike.ts +0 -13
- package/src/db/schema/blob_push_event.ts +0 -21
- package/src/db/schema/communication_template.ts +0 -19
- package/src/db/schema/expiring_tag.ts +0 -18
- package/src/db/schema/firehose_cursor.ts +0 -13
- package/src/db/schema/index.ts +0 -60
- package/src/db/schema/job_cursor.ts +0 -13
- package/src/db/schema/label.ts +0 -22
- package/src/db/schema/member.ts +0 -22
- package/src/db/schema/moderation_event.ts +0 -61
- package/src/db/schema/moderation_subject_status.ts +0 -52
- package/src/db/schema/moderator_assignment.ts +0 -16
- package/src/db/schema/ozone_set.ts +0 -24
- package/src/db/schema/record_events_stats.ts +0 -15
- package/src/db/schema/record_push_event.ts +0 -21
- package/src/db/schema/repo_push_event.ts +0 -19
- package/src/db/schema/report.ts +0 -28
- package/src/db/schema/report_activity.ts +0 -22
- package/src/db/schema/report_queue.ts +0 -21
- package/src/db/schema/report_stat.ts +0 -27
- package/src/db/schema/safelink.ts +0 -39
- package/src/db/schema/scheduled-action.ts +0 -25
- package/src/db/schema/setting.ts +0 -24
- package/src/db/schema/signing_key.ts +0 -10
- package/src/db/schema/verification.ts +0 -21
- package/src/db/types.ts +0 -24
- package/src/error.ts +0 -12
- package/src/image-invalidator.ts +0 -7
- package/src/index.ts +0 -154
- package/src/jetstream/service.ts +0 -107
- package/src/logger.ts +0 -29
- package/src/mod-service/expiring-tags.ts +0 -104
- package/src/mod-service/index.ts +0 -1842
- package/src/mod-service/profile.ts +0 -139
- package/src/mod-service/report.ts +0 -429
- package/src/mod-service/status.ts +0 -549
- package/src/mod-service/strike.ts +0 -96
- package/src/mod-service/subject.ts +0 -311
- package/src/mod-service/types.ts +0 -96
- package/src/mod-service/util.ts +0 -99
- package/src/mod-service/views.ts +0 -912
- package/src/queue/service.ts +0 -603
- package/src/report/activity.ts +0 -281
- package/src/report/handle-report-update.ts +0 -209
- package/src/report/reassign.ts +0 -109
- package/src/report/stats.ts +0 -852
- package/src/report/views.ts +0 -239
- package/src/safelink/service.ts +0 -304
- package/src/scheduled-action/service.ts +0 -281
- package/src/scheduled-action/types.ts +0 -17
- package/src/sequencer/index.ts +0 -2
- package/src/sequencer/outbox.ts +0 -123
- package/src/sequencer/sequencer.ts +0 -147
- package/src/set/service.ts +0 -230
- package/src/setting/constants.ts +0 -3
- package/src/setting/service.ts +0 -148
- package/src/setting/types.ts +0 -3
- package/src/setting/validators.ts +0 -333
- package/src/tag-service/content-tagger.ts +0 -30
- package/src/tag-service/embed-tagger.ts +0 -70
- package/src/tag-service/index.ts +0 -70
- package/src/tag-service/language-data.ts +0 -561
- package/src/tag-service/language-tagger.ts +0 -101
- package/src/tag-service/util.ts +0 -13
- package/src/team/index.ts +0 -296
- package/src/util.ts +0 -230
- package/src/verification/issuer.ts +0 -146
- package/src/verification/service.ts +0 -208
- package/src/verification/util.ts +0 -53
- package/test.env +0 -2
- package/tests/3p-labeler.test.ts +0 -288
- package/tests/__snapshots__/account-strikes.test.ts.snap +0 -159
- package/tests/__snapshots__/age-assurance.test.ts.snap +0 -66
- package/tests/__snapshots__/blob-divert.test.ts.snap +0 -219
- package/tests/__snapshots__/get-account-timeline.test.ts.snap +0 -36
- package/tests/__snapshots__/get-record.test.ts.snap +0 -271
- package/tests/__snapshots__/get-records.test.ts.snap +0 -175
- package/tests/__snapshots__/get-repo.test.ts.snap +0 -91
- package/tests/__snapshots__/get-repos.test.ts.snap +0 -127
- package/tests/__snapshots__/get-starter-pack.test.ts.snap +0 -535
- package/tests/__snapshots__/get-subjects.test.ts.snap +0 -529
- package/tests/__snapshots__/moderation-events.test.ts.snap +0 -347
- package/tests/__snapshots__/moderation-statuses.test.ts.snap +0 -276
- package/tests/__snapshots__/moderation.test.ts.snap +0 -85
- package/tests/__snapshots__/report-reason.test.ts.snap +0 -14
- package/tests/__snapshots__/safelink.test.ts.snap +0 -179
- package/tests/__snapshots__/scheduled-action.test.ts.snap +0 -61
- package/tests/__snapshots__/sets.test.ts.snap +0 -46
- package/tests/__snapshots__/settings.test.ts.snap +0 -52
- package/tests/__snapshots__/team.test.ts.snap +0 -374
- package/tests/__snapshots__/verification-listener.test.ts.snap +0 -152
- package/tests/__snapshots__/verification.test.ts.snap +0 -302
- package/tests/_util.ts +0 -242
- package/tests/account-strikes.test.ts +0 -184
- package/tests/ack-all-subjects-of-account.test.ts +0 -177
- package/tests/age-assurance.test.ts +0 -372
- package/tests/blob-divert.test.ts +0 -106
- package/tests/communication-templates.test.ts +0 -149
- package/tests/content-tagger.test.ts +0 -170
- package/tests/db.test.ts +0 -184
- package/tests/expiring-label.test.ts +0 -72
- package/tests/expiring-tags.test.ts +0 -232
- package/tests/get-account-timeline.test.ts +0 -85
- package/tests/get-config.test.ts +0 -55
- package/tests/get-lists.test.ts +0 -111
- package/tests/get-profiles.test.ts +0 -70
- package/tests/get-record.test.ts +0 -130
- package/tests/get-records.test.ts +0 -91
- package/tests/get-repo.test.ts +0 -171
- package/tests/get-report.test.ts +0 -136
- package/tests/get-reporter-stats.test.ts +0 -132
- package/tests/get-repos.test.ts +0 -91
- package/tests/get-starter-pack.test.ts +0 -115
- package/tests/get-subjects.test.ts +0 -81
- package/tests/mod-tool.test.ts +0 -268
- package/tests/moderation-appeals.test.ts +0 -260
- package/tests/moderation-events.test.ts +0 -756
- package/tests/moderation-status-tags.test.ts +0 -140
- package/tests/moderation-statuses.test.ts +0 -495
- package/tests/moderation.test.ts +0 -992
- package/tests/protected-tags.test.ts +0 -218
- package/tests/query-labels.test.ts +0 -238
- package/tests/query-reports.test.ts +0 -608
- package/tests/queue-assignment.test.ts +0 -428
- package/tests/queue-router.test.ts +0 -306
- package/tests/queues.test.ts +0 -690
- package/tests/record-and-account-events.test.ts +0 -197
- package/tests/repo-search.test.ts +0 -136
- package/tests/report-action.test.ts +0 -308
- package/tests/report-activity.test.ts +0 -711
- package/tests/report-assignment.test.ts +0 -517
- package/tests/report-muting.test.ts +0 -100
- package/tests/report-reason.test.ts +0 -154
- package/tests/report-reassign-queue.test.ts +0 -340
- package/tests/report-routing.test.ts +0 -245
- package/tests/report-stats.test.ts +0 -545
- package/tests/revoke-account-credentials.test.ts +0 -54
- package/tests/safelink.test.ts +0 -534
- package/tests/scheduled-action-processor.test.ts +0 -488
- package/tests/scheduled-action.test.ts +0 -334
- package/tests/sequencer.test.ts +0 -227
- package/tests/server.test.ts +0 -62
- package/tests/sets.test.ts +0 -246
- package/tests/settings.test.ts +0 -308
- package/tests/strike-expiry-processor.test.ts +0 -299
- package/tests/subject-priority-score.test.ts +0 -96
- package/tests/takedown.test.ts +0 -105
- package/tests/team.test.ts +0 -216
- package/tests/verification-listener.test.ts +0 -129
- package/tests/verification.test.ts +0 -186
- package/tsconfig.build.json +0 -9
- package/tsconfig.build.tsbuildinfo +0 -1
- package/tsconfig.json +0 -7
- package/tsconfig.tests.json +0 -8
package/src/db/pagination.ts
DELETED
|
@@ -1,335 +0,0 @@
|
|
|
1
|
-
import { DynamicModule, SqlBool, sql } from 'kysely'
|
|
2
|
-
import { InvalidRequestError } from '@atproto/xrpc-server'
|
|
3
|
-
import { AnyQb, DbRef } from './types.js'
|
|
4
|
-
|
|
5
|
-
export type Cursor = { primary: string; secondary: string }
|
|
6
|
-
export type LabeledResult = {
|
|
7
|
-
primary: string | number
|
|
8
|
-
secondary: string | number
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* The GenericKeyset is an abstract class that sets-up the interface and partial implementation
|
|
13
|
-
* of a keyset-paginated cursor with two parts. There are three types involved:
|
|
14
|
-
* - Result: a raw result (i.e. a row from the db) containing data that will make-up a cursor.
|
|
15
|
-
* - E.g. { createdAt: '2022-01-01T12:00:00Z', cid: 'bafyx' }
|
|
16
|
-
* - LabeledResult: a Result processed such that the "primary" and "secondary" parts of the cursor are labeled.
|
|
17
|
-
* - E.g. { primary: '2022-01-01T12:00:00Z', secondary: 'bafyx' }
|
|
18
|
-
* - Cursor: the two string parts that make-up the packed/string cursor.
|
|
19
|
-
* - E.g. packed cursor '1641038400000::bafyx' in parts { primary: '1641038400000', secondary: 'bafyx' }
|
|
20
|
-
*
|
|
21
|
-
* These types relate as such. Implementers define the relations marked with a *:
|
|
22
|
-
* Result -*-> LabeledResult <-*-> Cursor <--> packed/string cursor
|
|
23
|
-
* ↳ SQL Condition
|
|
24
|
-
*/
|
|
25
|
-
export abstract class GenericKeyset<R, LR extends LabeledResult> {
|
|
26
|
-
constructor(
|
|
27
|
-
public primary: DbRef,
|
|
28
|
-
public secondary: DbRef,
|
|
29
|
-
) {}
|
|
30
|
-
abstract labelResult(result: R): LR
|
|
31
|
-
abstract labeledResultToCursor(labeled: LR): Cursor
|
|
32
|
-
abstract cursorToLabeledResult(cursor: Cursor): LR
|
|
33
|
-
packFromResult(results: R | R[]): string | undefined {
|
|
34
|
-
const result = Array.isArray(results) ? results.at(-1) : results
|
|
35
|
-
if (!result) return
|
|
36
|
-
return this.pack(this.labelResult(result))
|
|
37
|
-
}
|
|
38
|
-
pack(labeled?: LR): string | undefined {
|
|
39
|
-
if (!labeled) return
|
|
40
|
-
const cursor = this.labeledResultToCursor(labeled)
|
|
41
|
-
return this.packCursor(cursor)
|
|
42
|
-
}
|
|
43
|
-
unpack(cursorStr?: string): LR | undefined {
|
|
44
|
-
const cursor = this.unpackCursor(cursorStr)
|
|
45
|
-
if (!cursor) return
|
|
46
|
-
return this.cursorToLabeledResult(cursor)
|
|
47
|
-
}
|
|
48
|
-
packCursor(cursor?: Cursor): string | undefined {
|
|
49
|
-
if (!cursor) return
|
|
50
|
-
return `${cursor.primary}::${cursor.secondary}`
|
|
51
|
-
}
|
|
52
|
-
unpackCursor(cursorStr?: string): Cursor | undefined {
|
|
53
|
-
if (!cursorStr) return
|
|
54
|
-
const result = cursorStr.split('::')
|
|
55
|
-
const [primary, secondary, ...others] = result
|
|
56
|
-
if (!primary || !secondary || others.length > 0) {
|
|
57
|
-
throw new InvalidRequestError('Malformed cursor')
|
|
58
|
-
}
|
|
59
|
-
return {
|
|
60
|
-
primary,
|
|
61
|
-
secondary,
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
getSql(labeled?: LR, direction?: 'asc' | 'desc', tryIndex?: boolean) {
|
|
65
|
-
if (labeled === undefined) return
|
|
66
|
-
if (tryIndex) {
|
|
67
|
-
// The tryIndex param will likely disappear and become the default implementation: here for now for gradual rollout query-by-query.
|
|
68
|
-
if (direction === 'asc') {
|
|
69
|
-
return sql<SqlBool>`((${this.primary}, ${this.secondary}) > (${labeled.primary}, ${labeled.secondary}))`
|
|
70
|
-
} else {
|
|
71
|
-
return sql<SqlBool>`((${this.primary}, ${this.secondary}) < (${labeled.primary}, ${labeled.secondary}))`
|
|
72
|
-
}
|
|
73
|
-
} else {
|
|
74
|
-
// @NOTE this implementation can struggle to use an index on (primary, secondary) for pagination due to the "or" usage.
|
|
75
|
-
if (direction === 'asc') {
|
|
76
|
-
return sql<SqlBool>`((${this.primary} > ${labeled.primary}) or (${this.primary} = ${labeled.primary} and ${this.secondary} > ${labeled.secondary}))`
|
|
77
|
-
} else {
|
|
78
|
-
return sql<SqlBool>`((${this.primary} < ${labeled.primary}) or (${this.primary} = ${labeled.primary} and ${this.secondary} < ${labeled.secondary}))`
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
type StatusKeysetParam = {
|
|
85
|
-
lastReviewedAt: string | null
|
|
86
|
-
lastReportedAt: string | null
|
|
87
|
-
id: number
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export class StatusKeyset extends GenericKeyset<StatusKeysetParam, Cursor> {
|
|
91
|
-
labelResult(result: StatusKeysetParam): Cursor
|
|
92
|
-
labelResult(result: StatusKeysetParam) {
|
|
93
|
-
const primaryField = (
|
|
94
|
-
this.primary as ReturnType<DynamicModule<unknown>['ref']>
|
|
95
|
-
).dynamicReference.includes('lastReviewedAt')
|
|
96
|
-
? 'lastReviewedAt'
|
|
97
|
-
: 'lastReportedAt'
|
|
98
|
-
|
|
99
|
-
return {
|
|
100
|
-
primary: result[primaryField]
|
|
101
|
-
? new Date(`${result[primaryField]}`).getTime().toString()
|
|
102
|
-
: '',
|
|
103
|
-
secondary: result.id.toString(),
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
labeledResultToCursor(labeled: Cursor) {
|
|
107
|
-
return {
|
|
108
|
-
primary: labeled.primary,
|
|
109
|
-
secondary: labeled.secondary,
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
cursorToLabeledResult(cursor: Cursor) {
|
|
113
|
-
return {
|
|
114
|
-
primary: cursor.primary
|
|
115
|
-
? new Date(parseInt(cursor.primary, 10)).toISOString()
|
|
116
|
-
: '',
|
|
117
|
-
secondary: cursor.secondary,
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
unpackCursor(cursorStr?: string): Cursor | undefined {
|
|
121
|
-
if (!cursorStr) return
|
|
122
|
-
const result = cursorStr.split('::')
|
|
123
|
-
const [primary, secondary, ...others] = result
|
|
124
|
-
if (!secondary || others.length > 0) {
|
|
125
|
-
throw new InvalidRequestError('Malformed cursor')
|
|
126
|
-
}
|
|
127
|
-
return {
|
|
128
|
-
primary,
|
|
129
|
-
secondary,
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
// This is specifically built to handle nullable columns as primary sorting column
|
|
133
|
-
getSql(labeled?: Cursor, direction?: 'asc' | 'desc') {
|
|
134
|
-
if (labeled === undefined) return
|
|
135
|
-
if (direction === 'asc') {
|
|
136
|
-
return !labeled.primary
|
|
137
|
-
? sql<SqlBool>`(${this.primary} IS NULL AND ${this.secondary} > ${labeled.secondary})`
|
|
138
|
-
: sql<SqlBool>`((${this.primary}, ${this.secondary}) > (${labeled.primary}, ${labeled.secondary}) OR (${this.primary} is null))`
|
|
139
|
-
} else {
|
|
140
|
-
return !labeled.primary
|
|
141
|
-
? sql<SqlBool>`(${this.primary} IS NULL AND ${this.secondary} < ${labeled.secondary})`
|
|
142
|
-
: sql<SqlBool>`((${this.primary}, ${this.secondary}) < (${labeled.primary}, ${labeled.secondary}) OR (${this.primary} is null))`
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
type TimeIdKeysetParam = {
|
|
148
|
-
id: number
|
|
149
|
-
createdAt: string | Date
|
|
150
|
-
}
|
|
151
|
-
type TimeIdResult = TimeIdKeysetParam
|
|
152
|
-
|
|
153
|
-
export class TimeIdKeyset extends GenericKeyset<TimeIdKeysetParam, Cursor> {
|
|
154
|
-
labelResult(result: TimeIdResult): Cursor
|
|
155
|
-
labelResult(result: TimeIdResult) {
|
|
156
|
-
return { primary: result.createdAt, secondary: result.id.toString() }
|
|
157
|
-
}
|
|
158
|
-
labeledResultToCursor(labeled: Cursor) {
|
|
159
|
-
return {
|
|
160
|
-
primary: new Date(labeled.primary).getTime().toString(),
|
|
161
|
-
secondary: labeled.secondary,
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
cursorToLabeledResult(cursor: Cursor) {
|
|
165
|
-
const primaryDate = new Date(parseInt(cursor.primary, 10))
|
|
166
|
-
if (isNaN(primaryDate.getTime())) {
|
|
167
|
-
throw new InvalidRequestError('Malformed cursor')
|
|
168
|
-
}
|
|
169
|
-
return {
|
|
170
|
-
primary: primaryDate.toISOString(),
|
|
171
|
-
secondary: cursor.secondary,
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
type CreatedAtUriKeysetParam = {
|
|
177
|
-
createdAt: string
|
|
178
|
-
uri: string
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
export class CreatedAtUriKeyset extends GenericKeyset<
|
|
182
|
-
CreatedAtUriKeysetParam,
|
|
183
|
-
Cursor
|
|
184
|
-
> {
|
|
185
|
-
labelResult(result: CreatedAtUriKeysetParam): Cursor
|
|
186
|
-
labelResult(result: CreatedAtUriKeysetParam) {
|
|
187
|
-
return { primary: result.createdAt, secondary: result.uri }
|
|
188
|
-
}
|
|
189
|
-
labeledResultToCursor(labeled: Cursor) {
|
|
190
|
-
return {
|
|
191
|
-
primary: new Date(labeled.primary).getTime().toString(),
|
|
192
|
-
secondary: labeled.secondary,
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
cursorToLabeledResult(cursor: Cursor) {
|
|
196
|
-
const primaryDate = new Date(parseInt(cursor.primary, 10))
|
|
197
|
-
if (isNaN(primaryDate.getTime())) {
|
|
198
|
-
throw new InvalidRequestError('Malformed cursor')
|
|
199
|
-
}
|
|
200
|
-
return {
|
|
201
|
-
primary: primaryDate.toISOString(),
|
|
202
|
-
secondary: cursor.secondary,
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
type EndAtIdKeysetParam = {
|
|
208
|
-
id: number
|
|
209
|
-
endAt: string | null
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
// Special value used here to represent a "permanent" endAt (i.e. a record that should be sorted as if it has an endAt infinitely far in the future).
|
|
213
|
-
// Chosen to sort before all real timestamps in DESC order.
|
|
214
|
-
const PERMANENT_ENDSAT = '9999-12-31T23:59:59.999Z'
|
|
215
|
-
|
|
216
|
-
export class EndAtIdKeyset extends GenericKeyset<EndAtIdKeysetParam, Cursor> {
|
|
217
|
-
labelResult(result: EndAtIdKeysetParam): Cursor
|
|
218
|
-
labelResult(result: EndAtIdKeysetParam) {
|
|
219
|
-
return {
|
|
220
|
-
primary: result.endAt ?? PERMANENT_ENDSAT,
|
|
221
|
-
secondary: result.id.toString(),
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
labeledResultToCursor(labeled: Cursor) {
|
|
225
|
-
return {
|
|
226
|
-
primary: new Date(labeled.primary).getTime().toString(),
|
|
227
|
-
secondary: labeled.secondary,
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
cursorToLabeledResult(cursor: Cursor) {
|
|
231
|
-
const primaryDate = new Date(parseInt(cursor.primary, 10))
|
|
232
|
-
if (isNaN(primaryDate.getTime())) {
|
|
233
|
-
throw new InvalidRequestError('Malformed cursor')
|
|
234
|
-
}
|
|
235
|
-
return {
|
|
236
|
-
primary: primaryDate.toISOString(),
|
|
237
|
-
secondary: cursor.secondary,
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
// Override to substitute the PERMANENT_ENDSAT sentinel for NULL endAt rows
|
|
241
|
-
// so cursor pagination works across permanent (endAt IS NULL) assignments.
|
|
242
|
-
getSql(labeled?: Cursor, direction?: 'asc' | 'desc', tryIndex?: boolean) {
|
|
243
|
-
if (labeled === undefined) return
|
|
244
|
-
const primaryRef = sql`COALESCE(${this.primary}, ${PERMANENT_ENDSAT})`
|
|
245
|
-
if (tryIndex) {
|
|
246
|
-
if (direction === 'asc') {
|
|
247
|
-
return sql<SqlBool>`((${primaryRef}, ${this.secondary}) > (${labeled.primary}, ${labeled.secondary}))`
|
|
248
|
-
} else {
|
|
249
|
-
return sql<SqlBool>`((${primaryRef}, ${this.secondary}) < (${labeled.primary}, ${labeled.secondary}))`
|
|
250
|
-
}
|
|
251
|
-
} else {
|
|
252
|
-
if (direction === 'asc') {
|
|
253
|
-
return sql<SqlBool>`((${primaryRef} > ${labeled.primary}) or (${primaryRef} = ${labeled.primary} and ${this.secondary} > ${labeled.secondary}))`
|
|
254
|
-
} else {
|
|
255
|
-
return sql<SqlBool>`((${primaryRef} < ${labeled.primary}) or (${primaryRef} = ${labeled.primary} and ${this.secondary} < ${labeled.secondary}))`
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
type ComputedAtIdKeysetParam = {
|
|
262
|
-
id: number
|
|
263
|
-
computedAt: string | Date
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
export class ComputedAtIdKeyset extends GenericKeyset<
|
|
267
|
-
ComputedAtIdKeysetParam,
|
|
268
|
-
Cursor
|
|
269
|
-
> {
|
|
270
|
-
labelResult(result: ComputedAtIdKeysetParam): Cursor
|
|
271
|
-
labelResult(result: ComputedAtIdKeysetParam) {
|
|
272
|
-
return { primary: result.computedAt, secondary: result.id.toString() }
|
|
273
|
-
}
|
|
274
|
-
labeledResultToCursor(labeled: Cursor) {
|
|
275
|
-
return {
|
|
276
|
-
primary: new Date(labeled.primary).getTime().toString(),
|
|
277
|
-
secondary: labeled.secondary,
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
cursorToLabeledResult(cursor: Cursor) {
|
|
281
|
-
const primaryDate = new Date(parseInt(cursor.primary, 10))
|
|
282
|
-
if (isNaN(primaryDate.getTime())) {
|
|
283
|
-
throw new InvalidRequestError('Malformed cursor')
|
|
284
|
-
}
|
|
285
|
-
return {
|
|
286
|
-
primary: primaryDate.toISOString(),
|
|
287
|
-
secondary: cursor.secondary,
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
export const paginate = <
|
|
293
|
-
QB extends AnyQb,
|
|
294
|
-
K extends GenericKeyset<unknown, any>,
|
|
295
|
-
>(
|
|
296
|
-
qb: QB,
|
|
297
|
-
opts: {
|
|
298
|
-
limit?: number
|
|
299
|
-
cursor?: string
|
|
300
|
-
direction?: 'asc' | 'desc'
|
|
301
|
-
keyset: K
|
|
302
|
-
tryIndex?: boolean
|
|
303
|
-
// By default, pg does nullsFirst
|
|
304
|
-
nullsLast?: boolean
|
|
305
|
-
},
|
|
306
|
-
): QB => {
|
|
307
|
-
const {
|
|
308
|
-
limit,
|
|
309
|
-
cursor,
|
|
310
|
-
keyset,
|
|
311
|
-
direction = 'desc',
|
|
312
|
-
tryIndex,
|
|
313
|
-
nullsLast,
|
|
314
|
-
} = opts
|
|
315
|
-
const keysetSql = keyset.getSql(keyset.unpack(cursor), direction, tryIndex)
|
|
316
|
-
return qb
|
|
317
|
-
.$if(!!limit, (q) => q.limit(limit as number))
|
|
318
|
-
.$if(!nullsLast, (q) =>
|
|
319
|
-
q.orderBy(keyset.primary, direction).orderBy(keyset.secondary, direction),
|
|
320
|
-
)
|
|
321
|
-
.$if(!!nullsLast, (q) =>
|
|
322
|
-
q
|
|
323
|
-
.orderBy(
|
|
324
|
-
direction === 'asc'
|
|
325
|
-
? sql`${keyset.primary} asc nulls last`
|
|
326
|
-
: sql`${keyset.primary} desc nulls last`,
|
|
327
|
-
)
|
|
328
|
-
.orderBy(
|
|
329
|
-
direction === 'asc'
|
|
330
|
-
? sql`${keyset.secondary} asc nulls last`
|
|
331
|
-
: sql`${keyset.secondary} desc nulls last`,
|
|
332
|
-
),
|
|
333
|
-
)
|
|
334
|
-
.$if(!!keysetSql, (qb) => (keysetSql ? qb.where(keysetSql) : qb)) as QB
|
|
335
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { GeneratedAlways, Selectable } from 'kysely'
|
|
2
|
-
|
|
3
|
-
export const tableName = 'account_events_stats'
|
|
4
|
-
|
|
5
|
-
export type AccountEventsStats = {
|
|
6
|
-
subjectDid: GeneratedAlways<string>
|
|
7
|
-
takedownCount: GeneratedAlways<number>
|
|
8
|
-
suspendCount: GeneratedAlways<number>
|
|
9
|
-
escalateCount: GeneratedAlways<number>
|
|
10
|
-
reportCount: GeneratedAlways<number>
|
|
11
|
-
appealCount: GeneratedAlways<number>
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export type AccountEventsStatsRow = Selectable<AccountEventsStats>
|
|
15
|
-
|
|
16
|
-
export type PartialDB = { [tableName]: AccountEventsStats }
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { GeneratedAlways, Selectable } from 'kysely'
|
|
2
|
-
|
|
3
|
-
export const tableName = 'account_record_events_stats'
|
|
4
|
-
|
|
5
|
-
type AccountRecordEventsStats = {
|
|
6
|
-
subjectDid: GeneratedAlways<string>
|
|
7
|
-
totalReports: GeneratedAlways<number>
|
|
8
|
-
reportedCount: GeneratedAlways<number>
|
|
9
|
-
escalatedCount: GeneratedAlways<number>
|
|
10
|
-
appealedCount: GeneratedAlways<number>
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export type AccountRecordEventsStatsRow = Selectable<AccountRecordEventsStats>
|
|
14
|
-
|
|
15
|
-
export type PartialDB = { [tableName]: AccountRecordEventsStats }
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { GeneratedAlways, Selectable } from 'kysely'
|
|
2
|
-
|
|
3
|
-
export const tableName = 'account_record_status_stats'
|
|
4
|
-
|
|
5
|
-
type AccountRecordStatusStats = {
|
|
6
|
-
did: GeneratedAlways<string>
|
|
7
|
-
subjectCount: GeneratedAlways<number>
|
|
8
|
-
pendingCount: GeneratedAlways<number>
|
|
9
|
-
processedCount: GeneratedAlways<number>
|
|
10
|
-
takendownCount: GeneratedAlways<number>
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export type AccountRecordStatusStatsRow = Selectable<AccountRecordStatusStats>
|
|
14
|
-
|
|
15
|
-
export type PartialDB = { [tableName]: AccountRecordStatusStats }
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export const accountStrikeTableName = 'account_strike'
|
|
2
|
-
|
|
3
|
-
export interface AccountStrike {
|
|
4
|
-
did: string // Primary key
|
|
5
|
-
firstStrikeAt: string | null
|
|
6
|
-
lastStrikeAt: string | null
|
|
7
|
-
activeStrikeCount: number
|
|
8
|
-
totalStrikeCount: number
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export type PartialDB = {
|
|
12
|
-
[accountStrikeTableName]: AccountStrike
|
|
13
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Generated } from 'kysely'
|
|
2
|
-
|
|
3
|
-
export const eventTableName = 'blob_push_event'
|
|
4
|
-
|
|
5
|
-
export type BlobPushEventType = 'pds_takedown' | 'appview_takedown'
|
|
6
|
-
|
|
7
|
-
export interface BlobPushEvent {
|
|
8
|
-
id: Generated<number>
|
|
9
|
-
eventType: BlobPushEventType
|
|
10
|
-
subjectDid: string
|
|
11
|
-
subjectBlobCid: string
|
|
12
|
-
subjectUri: string | null
|
|
13
|
-
takedownRef: string | null
|
|
14
|
-
confirmedAt: Date | null
|
|
15
|
-
lastAttempted: Date | null
|
|
16
|
-
attempts: Generated<number>
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export type PartialDB = {
|
|
20
|
-
[eventTableName]: BlobPushEvent
|
|
21
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Generated, GeneratedAlways } from 'kysely'
|
|
2
|
-
|
|
3
|
-
export const communicationTemplateTableName = 'communication_template'
|
|
4
|
-
|
|
5
|
-
export interface CommunicationTemplate {
|
|
6
|
-
id: GeneratedAlways<number>
|
|
7
|
-
name: string
|
|
8
|
-
contentMarkdown: string
|
|
9
|
-
subject: string | null
|
|
10
|
-
lang: string | null
|
|
11
|
-
disabled: Generated<boolean>
|
|
12
|
-
createdAt: Date
|
|
13
|
-
updatedAt: Date
|
|
14
|
-
lastUpdatedBy: string
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export type PartialDB = {
|
|
18
|
-
[communicationTemplateTableName]: CommunicationTemplate
|
|
19
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Generated } from 'kysely'
|
|
2
|
-
|
|
3
|
-
export const tableName = 'expiring_tag'
|
|
4
|
-
|
|
5
|
-
export interface ExpiringTag {
|
|
6
|
-
id: Generated<number>
|
|
7
|
-
eventId: number
|
|
8
|
-
did: string
|
|
9
|
-
recordPath: string
|
|
10
|
-
convoId: string
|
|
11
|
-
tag: string
|
|
12
|
-
expiresAt: string
|
|
13
|
-
createdBy: string
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export type PartialDB = {
|
|
17
|
-
[tableName]: ExpiringTag
|
|
18
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Generated } from 'kysely'
|
|
2
|
-
|
|
3
|
-
export const firehoseCursorTableName = 'firehose_cursor'
|
|
4
|
-
|
|
5
|
-
export interface FirehoseCursor {
|
|
6
|
-
service: string
|
|
7
|
-
cursor: number | null
|
|
8
|
-
updatedAt: Generated<string>
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export type PartialDB = {
|
|
12
|
-
[firehoseCursorTableName]: FirehoseCursor
|
|
13
|
-
}
|
package/src/db/schema/index.ts
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { Kysely } from 'kysely'
|
|
2
|
-
import * as accountEventsStats from './account_events_stats.js'
|
|
3
|
-
import * as accountRecordEventsStats from './account_record_events_stats.js'
|
|
4
|
-
import * as accountRecordStatusStats from './account_record_status_stats.js'
|
|
5
|
-
import * as accountStrike from './account_strike.js'
|
|
6
|
-
import * as blobPushEvent from './blob_push_event.js'
|
|
7
|
-
import * as communicationTemplate from './communication_template.js'
|
|
8
|
-
import * as expiringTag from './expiring_tag.js'
|
|
9
|
-
import * as firehoseCursor from './firehose_cursor.js'
|
|
10
|
-
import * as jobCursor from './job_cursor.js'
|
|
11
|
-
import * as label from './label.js'
|
|
12
|
-
import * as member from './member.js'
|
|
13
|
-
import * as modEvent from './moderation_event.js'
|
|
14
|
-
import * as modSubjectStatus from './moderation_subject_status.js'
|
|
15
|
-
import * as moderatorAssignment from './moderator_assignment.js'
|
|
16
|
-
import * as set from './ozone_set.js'
|
|
17
|
-
import * as recordEventsStats from './record_events_stats.js'
|
|
18
|
-
import * as recordPushEvent from './record_push_event.js'
|
|
19
|
-
import * as repoPushEvent from './repo_push_event.js'
|
|
20
|
-
import * as report from './report.js'
|
|
21
|
-
import * as reportActivity from './report_activity.js'
|
|
22
|
-
import * as reportQueue from './report_queue.js'
|
|
23
|
-
import * as reportStat from './report_stat.js'
|
|
24
|
-
import * as safelink from './safelink.js'
|
|
25
|
-
import * as scheduledAction from './scheduled-action.js'
|
|
26
|
-
import * as setting from './setting.js'
|
|
27
|
-
import * as signingKey from './signing_key.js'
|
|
28
|
-
import * as verification from './verification.js'
|
|
29
|
-
|
|
30
|
-
export type DatabaseSchemaType = modEvent.PartialDB &
|
|
31
|
-
modSubjectStatus.PartialDB &
|
|
32
|
-
report.PartialDB &
|
|
33
|
-
reportActivity.PartialDB &
|
|
34
|
-
reportQueue.PartialDB &
|
|
35
|
-
label.PartialDB &
|
|
36
|
-
signingKey.PartialDB &
|
|
37
|
-
repoPushEvent.PartialDB &
|
|
38
|
-
recordPushEvent.PartialDB &
|
|
39
|
-
blobPushEvent.PartialDB &
|
|
40
|
-
communicationTemplate.PartialDB &
|
|
41
|
-
set.PartialDB &
|
|
42
|
-
member.PartialDB &
|
|
43
|
-
setting.PartialDB &
|
|
44
|
-
accountEventsStats.PartialDB &
|
|
45
|
-
recordEventsStats.PartialDB &
|
|
46
|
-
accountRecordEventsStats.PartialDB &
|
|
47
|
-
accountRecordStatusStats.PartialDB &
|
|
48
|
-
accountStrike.PartialDB &
|
|
49
|
-
verification.PartialDB &
|
|
50
|
-
firehoseCursor.PartialDB &
|
|
51
|
-
jobCursor.PartialDB &
|
|
52
|
-
safelink.PartialDB &
|
|
53
|
-
scheduledAction.PartialDB &
|
|
54
|
-
moderatorAssignment.PartialDB &
|
|
55
|
-
reportStat.PartialDB &
|
|
56
|
-
expiringTag.PartialDB
|
|
57
|
-
|
|
58
|
-
export type DatabaseSchema = Kysely<DatabaseSchemaType>
|
|
59
|
-
|
|
60
|
-
export default DatabaseSchema
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Generated } from 'kysely'
|
|
2
|
-
|
|
3
|
-
export const jobCursorTableName = 'job_cursor'
|
|
4
|
-
|
|
5
|
-
export interface JobCursor {
|
|
6
|
-
job: string
|
|
7
|
-
cursor: string | null
|
|
8
|
-
updatedAt: Generated<string>
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export type PartialDB = {
|
|
12
|
-
[jobCursorTableName]: JobCursor
|
|
13
|
-
}
|
package/src/db/schema/label.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Generated, Selectable } from 'kysely'
|
|
2
|
-
|
|
3
|
-
export const tableName = 'label'
|
|
4
|
-
|
|
5
|
-
export interface Label {
|
|
6
|
-
id: Generated<number>
|
|
7
|
-
src: string
|
|
8
|
-
uri: string
|
|
9
|
-
cid: string
|
|
10
|
-
val: string
|
|
11
|
-
neg: boolean
|
|
12
|
-
cts: string
|
|
13
|
-
exp: string | null
|
|
14
|
-
sig: Buffer | null
|
|
15
|
-
signingKeyId: number | null
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export type LabelRow = Selectable<Label>
|
|
19
|
-
|
|
20
|
-
export type PartialDB = { [tableName]: Label }
|
|
21
|
-
|
|
22
|
-
export const LabelChannel = 'label_channel' // used with notify/listen
|
package/src/db/schema/member.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Generated } from 'kysely'
|
|
2
|
-
|
|
3
|
-
export const memberTableName = 'member'
|
|
4
|
-
|
|
5
|
-
export interface Member {
|
|
6
|
-
did: string
|
|
7
|
-
role:
|
|
8
|
-
| 'tools.ozone.team.defs#roleAdmin'
|
|
9
|
-
| 'tools.ozone.team.defs#roleTriage'
|
|
10
|
-
| 'tools.ozone.team.defs#roleVerifier'
|
|
11
|
-
| 'tools.ozone.team.defs#roleModerator'
|
|
12
|
-
disabled: Generated<boolean>
|
|
13
|
-
handle: string | null
|
|
14
|
-
displayName: string | null
|
|
15
|
-
createdAt: Date
|
|
16
|
-
updatedAt: Date
|
|
17
|
-
lastUpdatedBy: string
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export type PartialDB = {
|
|
21
|
-
[memberTableName]: Member
|
|
22
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { Generated } from 'kysely'
|
|
2
|
-
|
|
3
|
-
export const eventTableName = 'moderation_event'
|
|
4
|
-
|
|
5
|
-
export interface ModerationEvent {
|
|
6
|
-
id: Generated<number>
|
|
7
|
-
action:
|
|
8
|
-
| 'tools.ozone.moderation.defs#modEventTakedown'
|
|
9
|
-
| 'tools.ozone.moderation.defs#modEventAcknowledge'
|
|
10
|
-
| 'tools.ozone.moderation.defs#modEventEscalate'
|
|
11
|
-
| 'tools.ozone.moderation.defs#modEventComment'
|
|
12
|
-
| 'tools.ozone.moderation.defs#modEventLabel'
|
|
13
|
-
| 'tools.ozone.moderation.defs#modEventReport'
|
|
14
|
-
| 'tools.ozone.moderation.defs#modEventMute'
|
|
15
|
-
| 'tools.ozone.moderation.defs#modEventUnmute'
|
|
16
|
-
| 'tools.ozone.moderation.defs#modEventMuteReporter'
|
|
17
|
-
| 'tools.ozone.moderation.defs#modEventUnmuteReporter'
|
|
18
|
-
| 'tools.ozone.moderation.defs#modEventReverseTakedown'
|
|
19
|
-
| 'tools.ozone.moderation.defs#modEventEmail'
|
|
20
|
-
| 'tools.ozone.moderation.defs#modEventResolveAppeal'
|
|
21
|
-
| 'tools.ozone.moderation.defs#modEventTag'
|
|
22
|
-
| 'tools.ozone.moderation.defs#accountEvent'
|
|
23
|
-
| 'tools.ozone.moderation.defs#identityEvent'
|
|
24
|
-
| 'tools.ozone.moderation.defs#recordEvent'
|
|
25
|
-
| 'tools.ozone.moderation.defs#modEventPriorityScore'
|
|
26
|
-
| 'tools.ozone.moderation.defs#ageAssuranceEvent'
|
|
27
|
-
| 'tools.ozone.moderation.defs#ageAssuranceOverrideEvent'
|
|
28
|
-
| 'tools.ozone.moderation.defs#ageAssurancePurgeEvent'
|
|
29
|
-
| 'tools.ozone.moderation.defs#revokeAccountCredentialsEvent'
|
|
30
|
-
subjectType:
|
|
31
|
-
| 'com.atproto.admin.defs#repoRef'
|
|
32
|
-
| 'com.atproto.repo.strongRef'
|
|
33
|
-
| 'chat.bsky.convo.defs#messageRef'
|
|
34
|
-
| 'chat.bsky.convo.defs#convoRef'
|
|
35
|
-
subjectDid: string
|
|
36
|
-
subjectUri: string | null
|
|
37
|
-
subjectCid: string | null
|
|
38
|
-
subjectBlobCids: string[] | null
|
|
39
|
-
subjectConvoId: string | null
|
|
40
|
-
subjectMessageId: string | null
|
|
41
|
-
createLabelVals: string | null
|
|
42
|
-
negateLabelVals: string | null
|
|
43
|
-
comment: string | null
|
|
44
|
-
createdAt: string
|
|
45
|
-
createdBy: string
|
|
46
|
-
durationInHours: number | null
|
|
47
|
-
expiresAt: string | null
|
|
48
|
-
meta: Record<string, string | boolean | number> | null
|
|
49
|
-
addedTags: string[] | null
|
|
50
|
-
removedTags: string[] | null
|
|
51
|
-
legacyRefId: number | null
|
|
52
|
-
modTool: { name: string; meta?: { [_ in string]: unknown } } | null
|
|
53
|
-
externalId: string | null
|
|
54
|
-
severityLevel: string | null
|
|
55
|
-
strikeCount: number | null
|
|
56
|
-
strikeExpiresAt: string | null
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export type PartialDB = {
|
|
60
|
-
[eventTableName]: ModerationEvent
|
|
61
|
-
}
|