diff options
| author | Hazelnoot <acomputerdog@gmail.com> | 2024-12-09 10:00:25 -0500 |
|---|---|---|
| committer | Hazelnoot <acomputerdog@gmail.com> | 2025-02-16 19:25:04 -0500 |
| commit | cc2edae7abff566ba968a6027018826099400320 (patch) | |
| tree | 34b7827841f07af0bad73f394d16cb117bc2401e /packages/backend/src | |
| parent | make `activity_log.duration` nullable (diff) | |
| download | sharkey-cc2edae7abff566ba968a6027018826099400320.tar.gz sharkey-cc2edae7abff566ba968a6027018826099400320.tar.bz2 sharkey-cc2edae7abff566ba968a6027018826099400320.zip | |
rename activity_log and activity_context to ap_inbox_log and ap_context
Diffstat (limited to 'packages/backend/src')
| -rw-r--r-- | packages/backend/src/boot/common.ts | 4 | ||||
| -rw-r--r-- | packages/backend/src/daemons/ApLogCleanupService.ts (renamed from packages/backend/src/daemons/ActivityLogCleanupService.ts) | 10 | ||||
| -rw-r--r-- | packages/backend/src/daemons/DaemonModule.ts | 6 | ||||
| -rw-r--r-- | packages/backend/src/di-symbols.ts | 5 | ||||
| -rw-r--r-- | packages/backend/src/models/RepositoryModule.ts | 24 | ||||
| -rw-r--r-- | packages/backend/src/models/SkApContext.ts (renamed from packages/backend/src/models/SkActivityContext.ts) | 8 | ||||
| -rw-r--r-- | packages/backend/src/models/SkApInboxLog.ts (renamed from packages/backend/src/models/SkActivityLog.ts) | 39 | ||||
| -rw-r--r-- | packages/backend/src/models/_.ts | 12 | ||||
| -rw-r--r-- | packages/backend/src/postgres.ts | 8 | ||||
| -rw-r--r-- | packages/backend/src/queue/processors/InboxProcessorService.ts | 30 |
10 files changed, 81 insertions, 65 deletions
diff --git a/packages/backend/src/boot/common.ts b/packages/backend/src/boot/common.ts index 3584e71153..2f97980e9a 100644 --- a/packages/backend/src/boot/common.ts +++ b/packages/backend/src/boot/common.ts @@ -13,7 +13,7 @@ import { ServerStatsService } from '@/daemons/ServerStatsService.js'; import { ServerService } from '@/server/ServerService.js'; import { MainModule } from '@/MainModule.js'; import { envOption } from '@/env.js'; -import { ActivityLogCleanupService } from '@/daemons/ActivityLogCleanupService.js'; +import { ApLogCleanupService } from '@/daemons/ApLogCleanupService.js'; export async function server() { const app = await NestFactory.createApplicationContext(MainModule, { @@ -29,7 +29,7 @@ export async function server() { if (!envOption.noDaemons) { app.get(QueueStatsService).start(); app.get(ServerStatsService).start(); - app.get(ActivityLogCleanupService).start(); + app.get(ApLogCleanupService).start(); } return app; diff --git a/packages/backend/src/daemons/ActivityLogCleanupService.ts b/packages/backend/src/daemons/ApLogCleanupService.ts index bf5ddec05d..261c6e3517 100644 --- a/packages/backend/src/daemons/ActivityLogCleanupService.ts +++ b/packages/backend/src/daemons/ApLogCleanupService.ts @@ -8,7 +8,7 @@ import { LessThan } from 'typeorm'; import { DI } from '@/di-symbols.js'; import type { Config } from '@/config.js'; import { bindThis } from '@/decorators.js'; -import type { ActivityLogsRepository } from '@/models/_.js'; +import type { ApInboxLogsRepository } from '@/models/_.js'; import { LoggerService } from '@/core/LoggerService.js'; import Logger from '@/logger.js'; @@ -16,7 +16,7 @@ import Logger from '@/logger.js'; export const scanInterval = 1000 * 60 * 10; @Injectable() -export class ActivityLogCleanupService implements OnApplicationShutdown { +export class ApLogCleanupService implements OnApplicationShutdown { private readonly logger: Logger; private scanTimer: NodeJS.Timeout | null = null; @@ -24,8 +24,8 @@ export class ActivityLogCleanupService implements OnApplicationShutdown { @Inject(DI.config) private readonly config: Config, - @Inject(DI.activityLogsRepository) - private readonly activityLogsRepository: ActivityLogsRepository, + @Inject(DI.apInboxLogsRepository) + private readonly apInboxLogsRepository: ApInboxLogsRepository, loggerService: LoggerService, ) { @@ -51,7 +51,7 @@ export class ActivityLogCleanupService implements OnApplicationShutdown { const oldestAllowed = new Date(Date.now() - this.config.activityLogging.maxAge); // Delete all logs older than the threshold. - const { affected } = await this.activityLogsRepository.delete({ + const { affected } = await this.apInboxLogsRepository.delete({ at: LessThan(oldestAllowed), }); diff --git a/packages/backend/src/daemons/DaemonModule.ts b/packages/backend/src/daemons/DaemonModule.ts index 12f890b3eb..ea71875f19 100644 --- a/packages/backend/src/daemons/DaemonModule.ts +++ b/packages/backend/src/daemons/DaemonModule.ts @@ -8,7 +8,7 @@ import { CoreModule } from '@/core/CoreModule.js'; import { GlobalModule } from '@/GlobalModule.js'; import { QueueStatsService } from './QueueStatsService.js'; import { ServerStatsService } from './ServerStatsService.js'; -import { ActivityLogCleanupService } from './ActivityLogCleanupService.js'; +import { ApLogCleanupService } from './ApLogCleanupService.js'; @Module({ imports: [ @@ -18,12 +18,12 @@ import { ActivityLogCleanupService } from './ActivityLogCleanupService.js'; providers: [ QueueStatsService, ServerStatsService, - ActivityLogCleanupService, + ApLogCleanupService, ], exports: [ QueueStatsService, ServerStatsService, - ActivityLogCleanupService, + ApLogCleanupService, ], }) export class DaemonModule {} diff --git a/packages/backend/src/di-symbols.ts b/packages/backend/src/di-symbols.ts index e591024fbd..6b53d38fb7 100644 --- a/packages/backend/src/di-symbols.ts +++ b/packages/backend/src/di-symbols.ts @@ -22,9 +22,8 @@ export const DI = { appsRepository: Symbol('appsRepository'), avatarDecorationsRepository: Symbol('avatarDecorationsRepository'), latestNotesRepository: Symbol('latestNotesRepository'), - activityContextRepository: Symbol('activityContextRepository'), - contextUsagesRepository: Symbol('contextUsagesRepository'), - activityLogsRepository: Symbol('activityLogsRepository'), + apContextsRepository: Symbol('apContextsRepository'), + apInboxLogsRepository: Symbol('apInboxLogsRepository'), noteFavoritesRepository: Symbol('noteFavoritesRepository'), noteThreadMutingsRepository: Symbol('noteThreadMutingsRepository'), noteReactionsRepository: Symbol('noteReactionsRepository'), diff --git a/packages/backend/src/models/RepositoryModule.ts b/packages/backend/src/models/RepositoryModule.ts index 37c4e4fd92..dd4ba1c0e4 100644 --- a/packages/backend/src/models/RepositoryModule.ts +++ b/packages/backend/src/models/RepositoryModule.ts @@ -81,8 +81,8 @@ import { MiUserSecurityKey, MiWebhook, NoteEdit, - SkActivityContext, - SkActivityLog, + SkApContext, + SkApInboxLog, } from './_.js'; import type { DataSource } from 'typeorm'; @@ -128,15 +128,15 @@ const $latestNotesRepository: Provider = { inject: [DI.db], }; -const $activityContextRepository: Provider = { - provide: DI.activityContextRepository, - useFactory: (db: DataSource) => db.getRepository(SkActivityContext).extend(miRepository as MiRepository<SkActivityContext>), +const $apContextRepository: Provider = { + provide: DI.apContextsRepository, + useFactory: (db: DataSource) => db.getRepository(SkApContext).extend(miRepository as MiRepository<SkApContext>), inject: [DI.db], }; -const $activityLogsRepository: Provider = { - provide: DI.activityLogsRepository, - useFactory: (db: DataSource) => db.getRepository(SkActivityLog).extend(miRepository as MiRepository<SkActivityLog>), +const $apInboxLogsRepository: Provider = { + provide: DI.apInboxLogsRepository, + useFactory: (db: DataSource) => db.getRepository(SkApInboxLog).extend(miRepository as MiRepository<SkApInboxLog>), inject: [DI.db], }; @@ -540,8 +540,8 @@ const $noteScheduleRepository: Provider = { $appsRepository, $avatarDecorationsRepository, $latestNotesRepository, - $activityContextRepository, - $activityLogsRepository, + $apContextRepository, + $apInboxLogsRepository, $noteFavoritesRepository, $noteThreadMutingsRepository, $noteReactionsRepository, @@ -616,8 +616,8 @@ const $noteScheduleRepository: Provider = { $appsRepository, $avatarDecorationsRepository, $latestNotesRepository, - $activityContextRepository, - $activityLogsRepository, + $apContextRepository, + $apInboxLogsRepository, $noteFavoritesRepository, $noteThreadMutingsRepository, $noteReactionsRepository, diff --git a/packages/backend/src/models/SkActivityContext.ts b/packages/backend/src/models/SkApContext.ts index 349c3e7113..ff4c6d6fbf 100644 --- a/packages/backend/src/models/SkActivityContext.ts +++ b/packages/backend/src/models/SkApContext.ts @@ -5,10 +5,10 @@ import { Column, PrimaryColumn, Entity } from 'typeorm'; -@Entity('activity_context') -export class SkActivityContext { +@Entity('ap_context') +export class SkApContext { @PrimaryColumn('text', { - primaryKeyConstraintName: 'PK_activity_context', + primaryKeyConstraintName: 'PK_ap_context', }) public md5: string; @@ -17,7 +17,7 @@ export class SkActivityContext { // eslint-disable-next-line @typescript-eslint/no-explicit-any public json: any; - constructor(data?: Partial<SkActivityContext>) { + constructor(data?: Partial<SkApContext>) { if (data) { Object.assign(this, data); } diff --git a/packages/backend/src/models/SkActivityLog.ts b/packages/backend/src/models/SkApInboxLog.ts index 6e462eccef..867094405c 100644 --- a/packages/backend/src/models/SkActivityLog.ts +++ b/packages/backend/src/models/SkApInboxLog.ts @@ -4,19 +4,22 @@ */ import { Column, Entity, Index, JoinColumn, ManyToOne, PrimaryColumn } from 'typeorm'; -import { SkActivityContext } from '@/models/SkActivityContext.js'; +import { SkApContext } from '@/models/SkApContext.js'; import { MiUser } from '@/models/_.js'; import { id } from './util/id.js'; -@Entity('activity_log') -export class SkActivityLog { +/** + * Records activities received in the inbox + */ +@Entity('ap_inbox_log') +export class SkApInboxLog { @PrimaryColumn({ ...id(), - primaryKeyConstraintName: 'PK_activity_log', + primaryKeyConstraintName: 'PK_ap_inbox_log', }) public id: string; - @Index('IDX_activity_log_at') + @Index('IDX_ap_inbox_log_at') @Column('timestamptz') public at: Date; @@ -26,13 +29,21 @@ export class SkActivityLog { @Column('double precision', { nullable: true }) public duration: number | null = null; + /** + * Key ID that was used to sign this request. + * Untrusted unless verified is true. + */ @Column({ type: 'text', name: 'key_id', }) public keyId: string; - @Index('IDX_activity_log_host') + /** + * Instance that the activity was sent from. + * Untrusted unless verified is true. + */ + @Index('IDX_ap_inbox_log_host') @Column('text') public host: string; @@ -57,16 +68,19 @@ export class SkActivityLog { }) public contextHash: string | null; - @ManyToOne(() => SkActivityContext, { + @ManyToOne(() => SkApContext, { onDelete: 'CASCADE', nullable: true, }) @JoinColumn({ name: 'context_hash', - foreignKeyConstraintName: 'FK_activity_log_context_hash', + foreignKeyConstraintName: 'FK_ap_inbox_log_context_hash', }) - public context: SkActivityContext | null; + public context: SkApContext | null; + /** + * ID of the user who signed this request. + */ @Column({ ...id(), name: 'auth_user_id', @@ -74,17 +88,20 @@ export class SkActivityLog { }) public authUserId: string | null; + /** + * User who signed this request. + */ @ManyToOne(() => MiUser, { onDelete: 'CASCADE', nullable: true, }) @JoinColumn({ name: 'auth_user_id', - foreignKeyConstraintName: 'FK_activity_log_auth_user_id', + foreignKeyConstraintName: 'FK_ap_inbox_log_auth_user_id', }) public authUser: MiUser | null; - constructor(data?: Partial<SkActivityLog>) { + constructor(data?: Partial<SkApInboxLog>) { if (data) { Object.assign(this, data); } diff --git a/packages/backend/src/models/_.ts b/packages/backend/src/models/_.ts index aeb6133d70..dabcf89d2c 100644 --- a/packages/backend/src/models/_.ts +++ b/packages/backend/src/models/_.ts @@ -82,8 +82,8 @@ import { NoteEdit } from '@/models/NoteEdit.js'; import { MiBubbleGameRecord } from '@/models/BubbleGameRecord.js'; import { MiReversiGame } from '@/models/ReversiGame.js'; import { MiNoteSchedule } from '@/models/NoteSchedule.js'; -import { SkActivityLog } from '@/models/SkActivityLog.js'; -import { SkActivityContext } from './SkActivityContext.js'; +import { SkApInboxLog } from '@/models/SkApInboxLog.js'; +import { SkApContext } from '@/models/SkApContext.js'; import type { QueryDeepPartialEntity } from 'typeorm/query-builder/QueryPartialEntity.js'; export interface MiRepository<T extends ObjectLiteral> { @@ -131,8 +131,8 @@ export const miRepository = { export { SkLatestNote, - SkActivityContext, - SkActivityLog, + SkApContext, + SkApInboxLog, MiAbuseUserReport, MiAbuseReportNotificationRecipient, MiAccessToken, @@ -233,8 +233,8 @@ export type HashtagsRepository = Repository<MiHashtag> & MiRepository<MiHashtag> export type InstancesRepository = Repository<MiInstance> & MiRepository<MiInstance>; export type MetasRepository = Repository<MiMeta> & MiRepository<MiMeta>; export type LatestNotesRepository = Repository<SkLatestNote> & MiRepository<SkLatestNote>; -export type ActivityContextRepository = Repository<SkActivityContext> & MiRepository<SkActivityContext>; -export type ActivityLogsRepository = Repository<SkActivityLog> & MiRepository<SkActivityLog>; +export type ApContextsRepository = Repository<SkApContext> & MiRepository<SkApContext>; +export type ApInboxLogsRepository = Repository<SkApInboxLog> & MiRepository<SkApInboxLog>; export type ModerationLogsRepository = Repository<MiModerationLog> & MiRepository<MiModerationLog>; export type MutingsRepository = Repository<MiMuting> & MiRepository<MiMuting>; export type RenoteMutingsRepository = Repository<MiRenoteMuting> & MiRepository<MiRenoteMuting>; diff --git a/packages/backend/src/postgres.ts b/packages/backend/src/postgres.ts index 658830ffcb..9437ac936a 100644 --- a/packages/backend/src/postgres.ts +++ b/packages/backend/src/postgres.ts @@ -85,8 +85,8 @@ import { Config } from '@/config.js'; import MisskeyLogger from '@/logger.js'; import { bindThis } from '@/decorators.js'; import { SkLatestNote } from '@/models/LatestNote.js'; -import { SkActivityContext } from '@/models/SkActivityContext.js'; -import { SkActivityLog } from '@/models/SkActivityLog.js'; +import { SkApContext } from '@/models/SkApContext.js'; +import { SkApInboxLog } from '@/models/SkApInboxLog.js'; pg.types.setTypeParser(20, Number); @@ -173,8 +173,8 @@ class MyCustomLogger implements Logger { export const entities = [ SkLatestNote, - SkActivityContext, - SkActivityLog, + SkApContext, + SkApInboxLog, MiAnnouncement, MiAnnouncementRead, MiMeta, diff --git a/packages/backend/src/queue/processors/InboxProcessorService.ts b/packages/backend/src/queue/processors/InboxProcessorService.ts index 5ed124a049..4182f3e090 100644 --- a/packages/backend/src/queue/processors/InboxProcessorService.ts +++ b/packages/backend/src/queue/processors/InboxProcessorService.ts @@ -32,8 +32,8 @@ import { MiMeta } from '@/models/Meta.js'; import { DI } from '@/di-symbols.js'; import { IdService } from '@/core/IdService.js'; import { JsonValue } from '@/misc/json-value.js'; -import { SkActivityLog, SkActivityContext } from '@/models/_.js'; -import type { ActivityLogsRepository, ActivityContextRepository } from '@/models/_.js'; +import { SkApInboxLog, SkApContext } from '@/models/_.js'; +import type { ApInboxLogsRepository, ApContextsRepository } from '@/models/_.js'; import type { Config } from '@/config.js'; import { QueueLoggerService } from '../QueueLoggerService.js'; import type { InboxJobData } from '../types.js'; @@ -68,11 +68,11 @@ export class InboxProcessorService implements OnApplicationShutdown { private queueLoggerService: QueueLoggerService, private idService: IdService, - @Inject(DI.activityContextRepository) - private activityContextRepository: ActivityContextRepository, + @Inject(DI.apContextsRepository) + private apContextsRepository: ApContextsRepository, - @Inject(DI.activityLogsRepository) - private activityLogsRepository: ActivityLogsRepository, + @Inject(DI.apInboxLogsRepository) + private apInboxLogsRepository: ApInboxLogsRepository, ) { this.logger = this.queueLoggerService.logger.createSubLogger('inbox'); this.updateInstanceQueue = new CollapsedQueue(process.env.NODE_ENV !== 'test' ? 60 * 1000 * 5 : 0, this.collapseUpdateInstanceJobs, this.performUpdateInstance); @@ -132,7 +132,7 @@ export class InboxProcessorService implements OnApplicationShutdown { } } - private async _process(job: Bull.Job<InboxJobData>, log?: SkActivityLog): Promise<string> { + private async _process(job: Bull.Job<InboxJobData>, log?: SkApInboxLog): Promise<string> { const signature = job.data.signature; // HTTP-signature let activity = job.data.activity; @@ -369,11 +369,11 @@ export class InboxProcessorService implements OnApplicationShutdown { await this.dispose(); } - private createLog(payload: IActivity, keyId: string): SkActivityLog { + private createLog(payload: IActivity, keyId: string): SkApInboxLog { const activity = Object.assign({}, payload, { '@context': undefined }) as unknown as JsonValue; const host = this.utilityService.extractDbHost(keyId); - const log = new SkActivityLog({ + const log = new SkApInboxLog({ id: this.idService.gen(), at: new Date(), verified: false, @@ -387,7 +387,7 @@ export class InboxProcessorService implements OnApplicationShutdown { if (context) { const md5 = createHash('md5').update(JSON.stringify(context)).digest('base64'); log.contextHash = md5; - log.context = new SkActivityContext({ + log.context = new SkApContext({ md5, json: context, }); @@ -396,18 +396,18 @@ export class InboxProcessorService implements OnApplicationShutdown { return log; } - private async recordLog(log: SkActivityLog): Promise<void> { + private async recordLog(log: SkApInboxLog): Promise<void> { if (log.context) { // https://stackoverflow.com/a/47064558 - await this.activityContextRepository - .createQueryBuilder('context_body') + await this.apContextsRepository + .createQueryBuilder('activity_context') .insert() - .into(SkActivityContext) + .into(SkApContext) .values(log.context) .orIgnore('md5') .execute(); } - await this.activityLogsRepository.upsert(log, ['id']); + await this.apInboxLogsRepository.upsert(log, ['id']); } } |