summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-10-16 10:45:22 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-10-16 10:45:22 +0900
commit1fa1d316969de15d6aaef1dbf0a0b95aec30e377 (patch)
treebacefb9f8dbc2cc18d8c775cdd0572263b4e11ef
parentUpdate CHANGELOG.md (diff)
downloadsharkey-1fa1d316969de15d6aaef1dbf0a0b95aec30e377.tar.gz
sharkey-1fa1d316969de15d6aaef1dbf0a0b95aec30e377.tar.bz2
sharkey-1fa1d316969de15d6aaef1dbf0a0b95aec30e377.zip
perf(backend): createdAtをidから取得するように & 無駄なDateインスタンスの生成を避けるように
-rw-r--r--packages/backend/migration/1697420555911-deleteCreatedAt.js144
-rw-r--r--packages/backend/src/core/AccountMoveService.ts4
-rw-r--r--packages/backend/src/core/AnnouncementService.ts10
-rw-r--r--packages/backend/src/core/AntennaService.ts2
-rw-r--r--packages/backend/src/core/ClipService.ts5
-rw-r--r--packages/backend/src/core/CreateSystemUserService.ts3
-rw-r--r--packages/backend/src/core/CustomEmojiService.ts2
-rw-r--r--packages/backend/src/core/DriveService.ts3
-rw-r--r--packages/backend/src/core/FederatedInstanceService.ts2
-rw-r--r--packages/backend/src/core/HashtagService.ts4
-rw-r--r--packages/backend/src/core/IdService.ts20
-rw-r--r--packages/backend/src/core/ModerationLogService.ts3
-rw-r--r--packages/backend/src/core/NoteCreateService.ts5
-rw-r--r--packages/backend/src/core/NotePiningService.ts3
-rw-r--r--packages/backend/src/core/NoteReadService.ts2
-rw-r--r--packages/backend/src/core/NotificationService.ts2
-rw-r--r--packages/backend/src/core/PollService.ts4
-rw-r--r--packages/backend/src/core/QueryService.ts8
-rw-r--r--packages/backend/src/core/ReactionService.ts3
-rw-r--r--packages/backend/src/core/RelayService.ts2
-rw-r--r--packages/backend/src/core/RoleService.ts17
-rw-r--r--packages/backend/src/core/SearchService.ts2
-rw-r--r--packages/backend/src/core/SignupService.ts3
-rw-r--r--packages/backend/src/core/UserBlockingService.ts3
-rw-r--r--packages/backend/src/core/UserFollowingService.ts6
-rw-r--r--packages/backend/src/core/UserListService.ts3
-rw-r--r--packages/backend/src/core/UserMutingService.ts3
-rw-r--r--packages/backend/src/core/WebhookService.ts3
-rw-r--r--packages/backend/src/core/activitypub/ApInboxService.ts3
-rw-r--r--packages/backend/src/core/activitypub/ApRendererService.ts8
-rw-r--r--packages/backend/src/core/activitypub/models/ApNoteService.ts2
-rw-r--r--packages/backend/src/core/activitypub/models/ApPersonService.ts6
-rw-r--r--packages/backend/src/core/chart/charts/active-users.ts19
-rw-r--r--packages/backend/src/core/entities/AbuseUserReportEntityService.ts4
-rw-r--r--packages/backend/src/core/entities/AntennaEntityService.ts5
-rw-r--r--packages/backend/src/core/entities/BlockingEntityService.ts4
-rw-r--r--packages/backend/src/core/entities/ChannelEntityService.ts4
-rw-r--r--packages/backend/src/core/entities/ClipEntityService.ts4
-rw-r--r--packages/backend/src/core/entities/DriveFileEntityService.ts6
-rw-r--r--packages/backend/src/core/entities/DriveFolderEntityService.ts5
-rw-r--r--packages/backend/src/core/entities/FlashEntityService.ts4
-rw-r--r--packages/backend/src/core/entities/FollowingEntityService.ts4
-rw-r--r--packages/backend/src/core/entities/GalleryPostEntityService.ts4
-rw-r--r--packages/backend/src/core/entities/InviteCodeEntityService.ts4
-rw-r--r--packages/backend/src/core/entities/ModerationLogEntityService.ts4
-rw-r--r--packages/backend/src/core/entities/MutingEntityService.ts4
-rw-r--r--packages/backend/src/core/entities/NoteEntityService.ts5
-rw-r--r--packages/backend/src/core/entities/NoteFavoriteEntityService.ts4
-rw-r--r--packages/backend/src/core/entities/NoteReactionEntityService.ts6
-rw-r--r--packages/backend/src/core/entities/PageEntityService.ts4
-rw-r--r--packages/backend/src/core/entities/RenoteMutingEntityService.ts4
-rw-r--r--packages/backend/src/core/entities/RoleEntityService.ts5
-rw-r--r--packages/backend/src/core/entities/UserEntityService.ts12
-rw-r--r--packages/backend/src/core/entities/UserListEntityService.ts6
-rw-r--r--packages/backend/src/misc/id/aid.ts3
-rw-r--r--packages/backend/src/misc/id/aidx.ts3
-rw-r--r--packages/backend/src/misc/id/meid.ts4
-rw-r--r--packages/backend/src/misc/id/meidg.ts4
-rw-r--r--packages/backend/src/misc/id/object-id.ts4
-rw-r--r--packages/backend/src/models/AbuseUserReport.ts6
-rw-r--r--packages/backend/src/models/AccessToken.ts5
-rw-r--r--packages/backend/src/models/Ad.ts6
-rw-r--r--packages/backend/src/models/Announcement.ts6
-rw-r--r--packages/backend/src/models/AnnouncementRead.ts5
-rw-r--r--packages/backend/src/models/Antenna.ts5
-rw-r--r--packages/backend/src/models/App.ts6
-rw-r--r--packages/backend/src/models/AuthSession.ts5
-rw-r--r--packages/backend/src/models/Blocking.ts6
-rw-r--r--packages/backend/src/models/Channel.ts6
-rw-r--r--packages/backend/src/models/ChannelFavorite.ts6
-rw-r--r--packages/backend/src/models/ChannelFollowing.ts6
-rw-r--r--packages/backend/src/models/Clip.ts5
-rw-r--r--packages/backend/src/models/ClipFavorite.ts3
-rw-r--r--packages/backend/src/models/DriveFile.ts6
-rw-r--r--packages/backend/src/models/DriveFolder.ts6
-rw-r--r--packages/backend/src/models/Flash.ts6
-rw-r--r--packages/backend/src/models/FlashLike.ts3
-rw-r--r--packages/backend/src/models/FollowRequest.ts5
-rw-r--r--packages/backend/src/models/Following.ts6
-rw-r--r--packages/backend/src/models/GalleryLike.ts3
-rw-r--r--packages/backend/src/models/GalleryPost.ts6
-rw-r--r--packages/backend/src/models/ModerationLog.ts5
-rw-r--r--packages/backend/src/models/Muting.ts6
-rw-r--r--packages/backend/src/models/Note.ts5
-rw-r--r--packages/backend/src/models/NoteFavorite.ts5
-rw-r--r--packages/backend/src/models/NoteReaction.ts5
-rw-r--r--packages/backend/src/models/NoteThreadMuting.ts4
-rw-r--r--packages/backend/src/models/Page.ts6
-rw-r--r--packages/backend/src/models/PageLike.ts3
-rw-r--r--packages/backend/src/models/PasswordResetRequest.ts3
-rw-r--r--packages/backend/src/models/PollVote.ts6
-rw-r--r--packages/backend/src/models/PromoRead.ts5
-rw-r--r--packages/backend/src/models/RegistrationTicket.ts3
-rw-r--r--packages/backend/src/models/RegistryItem.ts5
-rw-r--r--packages/backend/src/models/RenoteMuting.ts6
-rw-r--r--packages/backend/src/models/Role.ts5
-rw-r--r--packages/backend/src/models/RoleAssignment.ts5
-rw-r--r--packages/backend/src/models/Signin.ts5
-rw-r--r--packages/backend/src/models/SwSubscription.ts3
-rw-r--r--packages/backend/src/models/User.ts6
-rw-r--r--packages/backend/src/models/UserList.ts5
-rw-r--r--packages/backend/src/models/UserListFavorite.ts3
-rw-r--r--packages/backend/src/models/UserListMembership.ts5
-rw-r--r--packages/backend/src/models/UserNotePining.ts5
-rw-r--r--packages/backend/src/models/UserPending.ts3
-rw-r--r--packages/backend/src/models/Webhook.ts5
-rw-r--r--packages/backend/src/queue/processors/AggregateRetentionProcessorService.ts4
-rw-r--r--packages/backend/src/queue/processors/ExportFavoritesProcessorService.ts60
-rw-r--r--packages/backend/src/queue/processors/ExportNotesProcessorService.ts39
-rw-r--r--packages/backend/src/queue/processors/ImportAntennasProcessorService.ts3
-rw-r--r--packages/backend/src/queue/processors/ImportUserListsProcessorService.ts3
-rw-r--r--packages/backend/src/server/api/SigninApiService.ts3
-rw-r--r--packages/backend/src/server/api/SigninService.ts3
-rw-r--r--packages/backend/src/server/api/SignupApiService.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/admin/ad/create.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/admin/announcements/create.ts1
-rw-r--r--packages/backend/src/server/api/endpoints/admin/announcements/list.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/admin/drive/show-file.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/admin/emoji/copy.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/admin/get-user-ips.ts7
-rw-r--r--packages/backend/src/server/api/endpoints/admin/invite/create.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/admin/roles/users.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/admin/show-user.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/antennas/create.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/antennas/notes.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/app/create.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/auth/accept.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/auth/session/generate.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/channels/create.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/channels/favorite.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/channels/follow.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/channels/timeline.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/clips/favorite.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/drive/folders/create.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/flash/create.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/flash/like.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/gallery/posts/create.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/gallery/posts/like.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/i/apps.ts9
-rw-r--r--packages/backend/src/server/api/endpoints/i/registry/set.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/i/webhooks/create.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/invite/create.ts5
-rw-r--r--packages/backend/src/server/api/endpoints/invite/limit.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/miauth/gen-token.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/notes/favorites/create.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/notes/local-timeline.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/notes/polls/recommendation.ts2
-rw-r--r--packages/backend/src/server/api/endpoints/notes/polls/vote.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/notes/thread-muting/create.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/notes/timeline.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/pages/create.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/pages/like.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/promo/read.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/renote-mute/create.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/request-reset-password.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/reset-password.ts5
-rw-r--r--packages/backend/src/server/api/endpoints/roles/notes.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/sw/register.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/users/lists/create-from-public.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/users/lists/create.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/users/lists/favorite.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/users/notes.ts4
-rw-r--r--packages/backend/src/server/api/endpoints/users/report-abuse.ts3
-rw-r--r--packages/backend/src/server/api/endpoints/users/update-memo.ts2
-rw-r--r--packages/backend/src/server/oauth/OAuth2ProviderService.ts3
-rw-r--r--packages/backend/src/server/web/FeedService.ts8
-rw-r--r--packages/backend/test/e2e/streaming.ts1
-rw-r--r--packages/backend/test/unit/AnnouncementService.ts6
-rw-r--r--packages/backend/test/unit/RoleService.ts2
171 files changed, 442 insertions, 537 deletions
diff --git a/packages/backend/migration/1697420555911-deleteCreatedAt.js b/packages/backend/migration/1697420555911-deleteCreatedAt.js
new file mode 100644
index 0000000000..958d61a348
--- /dev/null
+++ b/packages/backend/migration/1697420555911-deleteCreatedAt.js
@@ -0,0 +1,144 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and other misskey contributors
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+export class DeleteCreatedAt1697420555911 {
+ name = 'DeleteCreatedAt1697420555911'
+
+ async up(queryRunner) {
+ await queryRunner.query(`DROP INDEX "public"."IDX_02878d441ceae15ce060b73daf"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_c8dfad3b72196dd1d6b5db168a"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_e11e649824a45d8ed01d597fd9"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_db2098070b2b5a523c58181f74"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_048a757923ed8b157e9895da53"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_1129c2ef687fc272df040bafaa"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_118ec703e596086fc4515acb39"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_b9a354f7941c1e779f3b33aea6"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_71cb7b435b7c0d4843317e7e16"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_11e71f2511589dcc8a4d3214f9"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_735a5544f9249d412255f47f95"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_582f8fab771a9040a12961f3e7"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_8f1a239bd077c8864a20c62c2c"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_f86d57fbca33c7a4e6897490cc"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_d1259a2c2b7bb413ff449e8711"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_fbb4297c927a9b85e9cefa2eb1"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_0fb627e1c2f753262a74f0562d"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_149d2e44785707548c82999b01"`);
+ await queryRunner.query(`ALTER TABLE "drive_folder" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "drive_file" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "abuse_user_report" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "app" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "access_token" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "ad" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "announcement" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "announcement_read" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "user_list" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "antenna" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "auth_session" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "blocking" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "channel" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "channel_following" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "channel_favorite" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "clip" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "note" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "clip_favorite" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "following" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "follow_request" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "gallery_post" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "gallery_like" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "moderation_log" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "muting" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "renote_muting" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "note_favorite" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "note_reaction" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "note_thread_muting" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "page" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "page_like" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "password_reset_request" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "poll_vote" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "promo_read" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "registration_ticket" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "registry_item" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "signin" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "sw_subscription" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "user_list_favorite" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "user_list_membership" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "user_note_pining" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "user_pending" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "webhook" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "role" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "role_assignment" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "flash" DROP COLUMN "createdAt"`);
+ await queryRunner.query(`ALTER TABLE "flash_like" DROP COLUMN "createdAt"`);
+ }
+
+ async down(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "flash_like" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "flash" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "role_assignment" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "role" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "webhook" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "user_pending" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "user_note_pining" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "user_list_membership" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "user_list_favorite" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "sw_subscription" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "signin" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "registry_item" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "registration_ticket" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "promo_read" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "poll_vote" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "password_reset_request" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "page_like" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "page" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "note_thread_muting" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "note_reaction" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "note_favorite" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "renote_muting" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "muting" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "moderation_log" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "gallery_like" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "gallery_post" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "follow_request" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "following" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "clip_favorite" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "note" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "clip" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "channel_favorite" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "channel_following" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "channel" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "blocking" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "auth_session" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "antenna" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "user_list" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "announcement_read" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "announcement" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "ad" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "access_token" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "app" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "abuse_user_report" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "user" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "drive_file" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`ALTER TABLE "drive_folder" ADD "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL`);
+ await queryRunner.query(`CREATE INDEX "IDX_149d2e44785707548c82999b01" ON "flash" ("createdAt") `);
+ await queryRunner.query(`CREATE INDEX "IDX_0fb627e1c2f753262a74f0562d" ON "poll_vote" ("createdAt") `);
+ await queryRunner.query(`CREATE INDEX "IDX_fbb4297c927a9b85e9cefa2eb1" ON "page" ("createdAt") `);
+ await queryRunner.query(`CREATE INDEX "IDX_d1259a2c2b7bb413ff449e8711" ON "renote_muting" ("createdAt") `);
+ await queryRunner.query(`CREATE INDEX "IDX_f86d57fbca33c7a4e6897490cc" ON "muting" ("createdAt") `);
+ await queryRunner.query(`CREATE INDEX "IDX_8f1a239bd077c8864a20c62c2c" ON "gallery_post" ("createdAt") `);
+ await queryRunner.query(`CREATE INDEX "IDX_582f8fab771a9040a12961f3e7" ON "following" ("createdAt") `);
+ await queryRunner.query(`CREATE INDEX "IDX_735a5544f9249d412255f47f95" ON "channel_favorite" ("createdAt") `);
+ await queryRunner.query(`CREATE INDEX "IDX_11e71f2511589dcc8a4d3214f9" ON "channel_following" ("createdAt") `);
+ await queryRunner.query(`CREATE INDEX "IDX_71cb7b435b7c0d4843317e7e16" ON "channel" ("createdAt") `);
+ await queryRunner.query(`CREATE INDEX "IDX_b9a354f7941c1e779f3b33aea6" ON "blocking" ("createdAt") `);
+ await queryRunner.query(`CREATE INDEX "IDX_118ec703e596086fc4515acb39" ON "announcement" ("createdAt") `);
+ await queryRunner.query(`CREATE INDEX "IDX_1129c2ef687fc272df040bafaa" ON "ad" ("createdAt") `);
+ await queryRunner.query(`CREATE INDEX "IDX_048a757923ed8b157e9895da53" ON "app" ("createdAt") `);
+ await queryRunner.query(`CREATE INDEX "IDX_db2098070b2b5a523c58181f74" ON "abuse_user_report" ("createdAt") `);
+ await queryRunner.query(`CREATE INDEX "IDX_e11e649824a45d8ed01d597fd9" ON "user" ("createdAt") `);
+ await queryRunner.query(`CREATE INDEX "IDX_c8dfad3b72196dd1d6b5db168a" ON "drive_file" ("createdAt") `);
+ await queryRunner.query(`CREATE INDEX "IDX_02878d441ceae15ce060b73daf" ON "drive_folder" ("createdAt") `);
+ }
+}
diff --git a/packages/backend/src/core/AccountMoveService.ts b/packages/backend/src/core/AccountMoveService.ts
index db64f42754..ed2891113b 100644
--- a/packages/backend/src/core/AccountMoveService.ts
+++ b/packages/backend/src/core/AccountMoveService.ts
@@ -186,7 +186,7 @@ export class AccountMoveService {
const genId = (): string => {
let id: string;
do {
- id = this.idService.genId();
+ id = this.idService.gen();
} while (newMutings.has(id));
return id;
};
@@ -234,7 +234,7 @@ export class AccountMoveService {
const genId = (): string => {
let id: string;
do {
- id = this.idService.genId();
+ id = this.idService.gen();
} while (newMemberships.has(id));
return id;
};
diff --git a/packages/backend/src/core/AnnouncementService.ts b/packages/backend/src/core/AnnouncementService.ts
index a5330db53f..ec1a082d78 100644
--- a/packages/backend/src/core/AnnouncementService.ts
+++ b/packages/backend/src/core/AnnouncementService.ts
@@ -53,7 +53,7 @@ export class AnnouncementService {
}))
.andWhere(new Brackets(qb => {
qb.orWhere('announcement.forExistingUsers = false');
- qb.orWhere('announcement.createdAt > :createdAt', { createdAt: user.createdAt });
+ qb.orWhere('announcement.id > :userId', { userId: user.id });
}))
.andWhere(`announcement.id NOT IN (${ readsQuery.getQuery() })`);
@@ -65,8 +65,7 @@ export class AnnouncementService {
@bindThis
public async create(values: Partial<MiAnnouncement>, moderator?: MiUser): Promise<{ raw: MiAnnouncement; packed: Packed<'Announcement'> }> {
const announcement = await this.announcementsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
updatedAt: null,
title: values.title,
text: values.text,
@@ -179,8 +178,7 @@ export class AnnouncementService {
public async read(user: MiUser, announcementId: MiAnnouncement['id']): Promise<void> {
try {
await this.announcementReadsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
announcementId: announcementId,
userId: user.id,
});
@@ -204,7 +202,7 @@ export class AnnouncementService {
const reads = me ? (options?.reads ?? await this.getReads(me.id)) : [];
return announcements.map(announcement => ({
id: announcement.id,
- createdAt: announcement.createdAt.toISOString(),
+ createdAt: this.idService.parse(announcement.id).date.toISOString(),
updatedAt: announcement.updatedAt?.toISOString() ?? null,
text: announcement.text,
title: announcement.title,
diff --git a/packages/backend/src/core/AntennaService.ts b/packages/backend/src/core/AntennaService.ts
index ca7624b1d4..60569c44fc 100644
--- a/packages/backend/src/core/AntennaService.ts
+++ b/packages/backend/src/core/AntennaService.ts
@@ -57,14 +57,12 @@ export class AntennaService implements OnApplicationShutdown {
case 'antennaCreated':
this.antennas.push({
...body,
- createdAt: new Date(body.createdAt),
lastUsedAt: new Date(body.lastUsedAt),
});
break;
case 'antennaUpdated':
this.antennas[this.antennas.findIndex(a => a.id === body.id)] = {
...body,
- createdAt: new Date(body.createdAt),
lastUsedAt: new Date(body.lastUsedAt),
};
break;
diff --git a/packages/backend/src/core/ClipService.ts b/packages/backend/src/core/ClipService.ts
index 3d9982e80f..e94f1eb531 100644
--- a/packages/backend/src/core/ClipService.ts
+++ b/packages/backend/src/core/ClipService.ts
@@ -46,8 +46,7 @@ export class ClipService {
}
const clip = await this.clipsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
userId: me.id,
name: name,
isPublic: isPublic,
@@ -109,7 +108,7 @@ export class ClipService {
try {
await this.clipNotesRepository.insert({
- id: this.idService.genId(),
+ id: this.idService.gen(),
noteId: noteId,
clipId: clip.id,
});
diff --git a/packages/backend/src/core/CreateSystemUserService.ts b/packages/backend/src/core/CreateSystemUserService.ts
index 3419d0b497..6b475316f0 100644
--- a/packages/backend/src/core/CreateSystemUserService.ts
+++ b/packages/backend/src/core/CreateSystemUserService.ts
@@ -52,8 +52,7 @@ export class CreateSystemUserService {
if (exist) throw new Error('the user is already exists');
account = await transactionalEntityManager.insert(MiUser, {
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
username: username,
usernameLower: username.toLowerCase(),
host: null,
diff --git a/packages/backend/src/core/CustomEmojiService.ts b/packages/backend/src/core/CustomEmojiService.ts
index 145c224f67..505c8e4269 100644
--- a/packages/backend/src/core/CustomEmojiService.ts
+++ b/packages/backend/src/core/CustomEmojiService.ts
@@ -69,7 +69,7 @@ export class CustomEmojiService implements OnApplicationShutdown {
roleIdsThatCanBeUsedThisEmojiAsReaction: MiRole['id'][];
}, moderator?: MiUser): Promise<MiEmoji> {
const emoji = await this.emojisRepository.insert({
- id: this.idService.genId(),
+ id: this.idService.gen(),
updatedAt: new Date(),
name: data.name,
category: data.category,
diff --git a/packages/backend/src/core/DriveService.ts b/packages/backend/src/core/DriveService.ts
index cecbec9638..484f4fc52e 100644
--- a/packages/backend/src/core/DriveService.ts
+++ b/packages/backend/src/core/DriveService.ts
@@ -564,8 +564,7 @@ export class DriveService {
const folder = await fetchFolder();
let file = new MiDriveFile();
- file.id = this.idService.genId();
- file.createdAt = new Date();
+ file.id = this.idService.gen();
file.userId = user ? user.id : null;
file.userHost = user ? user.host : null;
file.folderId = folder !== null ? folder.id : null;
diff --git a/packages/backend/src/core/FederatedInstanceService.ts b/packages/backend/src/core/FederatedInstanceService.ts
index 61806583c6..e41f010e48 100644
--- a/packages/backend/src/core/FederatedInstanceService.ts
+++ b/packages/backend/src/core/FederatedInstanceService.ts
@@ -56,7 +56,7 @@ export class FederatedInstanceService implements OnApplicationShutdown {
if (index == null) {
const i = await this.instancesRepository.insert({
- id: this.idService.genId(),
+ id: this.idService.gen(),
host,
firstRetrievedAt: new Date(),
}).then(x => this.instancesRepository.findOneByOrFail(x.identifiers[0]));
diff --git a/packages/backend/src/core/HashtagService.ts b/packages/backend/src/core/HashtagService.ts
index ddff28359a..1a2f37be39 100644
--- a/packages/backend/src/core/HashtagService.ts
+++ b/packages/backend/src/core/HashtagService.ts
@@ -120,7 +120,7 @@ export class HashtagService {
} else {
if (isUserAttached) {
this.hashtagsRepository.insert({
- id: this.idService.genId(),
+ id: this.idService.gen(),
name: tag,
mentionedUserIds: [],
mentionedUsersCount: 0,
@@ -137,7 +137,7 @@ export class HashtagService {
} as MiHashtag);
} else {
this.hashtagsRepository.insert({
- id: this.idService.genId(),
+ id: this.idService.gen(),
name: tag,
mentionedUserIds: [user.id],
mentionedUsersCount: 1,
diff --git a/packages/backend/src/core/IdService.ts b/packages/backend/src/core/IdService.ts
index 06c58ad8a1..c98b8ea6fc 100644
--- a/packages/backend/src/core/IdService.ts
+++ b/packages/backend/src/core/IdService.ts
@@ -26,17 +26,21 @@ export class IdService {
this.method = config.id.toLowerCase();
}
+ /**
+ * 時間を元にIDを生成します(省略時は現在日時)
+ * @param time 日時
+ */
@bindThis
- public genId(date?: Date): string {
- if (!date || (date > new Date())) date = new Date();
+ public gen(time?: number): string {
+ const t = (!time || (time > Date.now())) ? Date.now() : time;
switch (this.method) {
- case 'aid': return genAid(date);
- case 'aidx': return genAidx(date);
- case 'meid': return genMeid(date);
- case 'meidg': return genMeidg(date);
- case 'ulid': return ulid(date.getTime());
- case 'objectid': return genObjectId(date);
+ case 'aid': return genAid(t);
+ case 'aidx': return genAidx(t);
+ case 'meid': return genMeid(t);
+ case 'meidg': return genMeidg(t);
+ case 'ulid': return ulid(t);
+ case 'objectid': return genObjectId(t);
default: throw new Error('unrecognized id generation method');
}
}
diff --git a/packages/backend/src/core/ModerationLogService.ts b/packages/backend/src/core/ModerationLogService.ts
index f7f9063d92..8b78d02047 100644
--- a/packages/backend/src/core/ModerationLogService.ts
+++ b/packages/backend/src/core/ModerationLogService.ts
@@ -24,8 +24,7 @@ export class ModerationLogService {
@bindThis
public async log<T extends typeof moderationLogTypes[number]>(moderator: { id: MiUser['id'] }, type: T, info?: ModerationLogPayloads[T]) {
await this.moderationLogsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
userId: moderator.id,
type: type,
info: (info as any) ?? {},
diff --git a/packages/backend/src/core/NoteCreateService.ts b/packages/backend/src/core/NoteCreateService.ts
index e12945172f..400f1ec98c 100644
--- a/packages/backend/src/core/NoteCreateService.ts
+++ b/packages/backend/src/core/NoteCreateService.ts
@@ -222,7 +222,6 @@ export class NoteCreateService implements OnApplicationShutdown {
id: MiUser['id'];
username: MiUser['username'];
host: MiUser['host'];
- createdAt: MiUser['createdAt'];
isBot: MiUser['isBot'];
isCat: MiUser['isCat'];
}, data: Option, silent = false): Promise<MiNote> {
@@ -383,8 +382,7 @@ export class NoteCreateService implements OnApplicationShutdown {
@bindThis
private async insertNote(user: { id: MiUser['id']; host: MiUser['host']; }, data: Option, tags: string[], emojis: string[], mentionedUsers: MinimumUser[]) {
const insert = new MiNote({
- id: this.idService.genId(data.createdAt!),
- createdAt: data.createdAt!,
+ id: this.idService.gen(data.createdAt?.getTime()),
fileIds: data.files ? data.files.map(file => file.id) : [],
replyId: data.reply ? data.reply.id : null,
renoteId: data.renote ? data.renote.id : null,
@@ -483,7 +481,6 @@ export class NoteCreateService implements OnApplicationShutdown {
id: MiUser['id'];
username: MiUser['username'];
host: MiUser['host'];
- createdAt: MiUser['createdAt'];
isBot: MiUser['isBot'];
}, data: Option, silent: boolean, tags: string[], mentionedUsers: MinimumUser[]) {
const meta = await this.metaService.fetch();
diff --git a/packages/backend/src/core/NotePiningService.ts b/packages/backend/src/core/NotePiningService.ts
index 147554ee9a..52abb4c2a1 100644
--- a/packages/backend/src/core/NotePiningService.ts
+++ b/packages/backend/src/core/NotePiningService.ts
@@ -71,8 +71,7 @@ export class NotePiningService {
}
await this.userNotePiningsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
userId: user.id,
noteId: note.id,
} as MiUserNotePining);
diff --git a/packages/backend/src/core/NoteReadService.ts b/packages/backend/src/core/NoteReadService.ts
index 422e0192cf..03c1735e04 100644
--- a/packages/backend/src/core/NoteReadService.ts
+++ b/packages/backend/src/core/NoteReadService.ts
@@ -57,7 +57,7 @@ export class NoteReadService implements OnApplicationShutdown {
if (isThreadMuted) return;
const unread = {
- id: this.idService.genId(),
+ id: this.idService.gen(),
noteId: note.id,
userId: userId,
isSpecified: params.isSpecified,
diff --git a/packages/backend/src/core/NotificationService.ts b/packages/backend/src/core/NotificationService.ts
index 32d54d2576..c6d5023e65 100644
--- a/packages/backend/src/core/NotificationService.ts
+++ b/packages/backend/src/core/NotificationService.ts
@@ -125,7 +125,7 @@ export class NotificationService implements OnApplicationShutdown {
}
const notification = {
- id: this.idService.genId(),
+ id: this.idService.gen(),
createdAt: new Date(),
type: type,
notifierId: notifierId,
diff --git a/packages/backend/src/core/PollService.ts b/packages/backend/src/core/PollService.ts
index 570f2350f1..9e1b5ca78a 100644
--- a/packages/backend/src/core/PollService.ts
+++ b/packages/backend/src/core/PollService.ts
@@ -72,10 +72,8 @@ export class PollService {
throw new Error('already voted');
}
- // Create vote
await this.pollVotesRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
noteId: note.id,
userId: user.id,
choice: choice,
diff --git a/packages/backend/src/core/QueryService.ts b/packages/backend/src/core/QueryService.ts
index 50d1d2e65b..ae8f8a3f19 100644
--- a/packages/backend/src/core/QueryService.ts
+++ b/packages/backend/src/core/QueryService.ts
@@ -52,14 +52,14 @@ export class QueryService {
q.andWhere(`${q.alias}.id < :untilId`, { untilId: untilId });
q.orderBy(`${q.alias}.id`, 'DESC');
} else if (sinceDate && untilDate) {
- q.andWhere(`${q.alias}.id > :sinceId`, { sinceId: this.idService.genId(new Date(sinceDate)) });
- q.andWhere(`${q.alias}.id < :untilId`, { untilId: this.idService.genId(new Date(untilDate)) });
+ q.andWhere(`${q.alias}.id > :sinceId`, { sinceId: this.idService.gen(sinceDate) });
+ q.andWhere(`${q.alias}.id < :untilId`, { untilId: this.idService.gen(untilDate) });
q.orderBy(`${q.alias}.id`, 'DESC');
} else if (sinceDate) {
- q.andWhere(`${q.alias}.id > :sinceId`, { sinceId: this.idService.genId(new Date(sinceDate)) });
+ q.andWhere(`${q.alias}.id > :sinceId`, { sinceId: this.idService.gen(sinceDate) });
q.orderBy(`${q.alias}.id`, 'ASC');
} else if (untilDate) {
- q.andWhere(`${q.alias}.id < :untilId`, { untilId: this.idService.genId(new Date(untilDate)) });
+ q.andWhere(`${q.alias}.id < :untilId`, { untilId: this.idService.gen(untilDate) });
q.orderBy(`${q.alias}.id`, 'DESC');
} else {
q.orderBy(`${q.alias}.id`, 'DESC');
diff --git a/packages/backend/src/core/ReactionService.ts b/packages/backend/src/core/ReactionService.ts
index e7bbd44926..49b465a0f8 100644
--- a/packages/backend/src/core/ReactionService.ts
+++ b/packages/backend/src/core/ReactionService.ts
@@ -153,8 +153,7 @@ export class ReactionService {
}
const record: MiNoteReaction = {
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
noteId: note.id,
userId: user.id,
reaction,
diff --git a/packages/backend/src/core/RelayService.ts b/packages/backend/src/core/RelayService.ts
index 7171bf84c5..d40cd080c7 100644
--- a/packages/backend/src/core/RelayService.ts
+++ b/packages/backend/src/core/RelayService.ts
@@ -54,7 +54,7 @@ export class RelayService {
@bindThis
public async addRelay(inbox: string): Promise<MiRelay> {
const relay = await this.relaysRepository.insert({
- id: this.idService.genId(),
+ id: this.idService.gen(),
inbox,
status: 'requesting',
}).then(x => this.relaysRepository.findOneByOrFail(x.identifiers[0]));
diff --git a/packages/backend/src/core/RoleService.ts b/packages/backend/src/core/RoleService.ts
index 2c3547e4ac..d18fb240f7 100644
--- a/packages/backend/src/core/RoleService.ts
+++ b/packages/backend/src/core/RoleService.ts
@@ -125,7 +125,6 @@ export class RoleService implements OnApplicationShutdown {
if (cached) {
cached.push({
...body,
- createdAt: new Date(body.createdAt),
updatedAt: new Date(body.updatedAt),
lastUsedAt: new Date(body.lastUsedAt),
});
@@ -139,7 +138,6 @@ export class RoleService implements OnApplicationShutdown {
if (i > -1) {
cached[i] = {
...body,
- createdAt: new Date(body.createdAt),
updatedAt: new Date(body.updatedAt),
lastUsedAt: new Date(body.lastUsedAt),
};
@@ -159,7 +157,6 @@ export class RoleService implements OnApplicationShutdown {
if (cached) {
cached.push({
...body,
- createdAt: new Date(body.createdAt),
expiresAt: body.expiresAt ? new Date(body.expiresAt) : null,
});
}
@@ -198,10 +195,10 @@ export class RoleService implements OnApplicationShutdown {
return this.userEntityService.isRemoteUser(user);
}
case 'createdLessThan': {
- return user.createdAt.getTime() > (Date.now() - (value.sec * 1000));
+ return this.idService.parse(user.id).date.getTime() > (Date.now() - (value.sec * 1000));
}
case 'createdMoreThan': {
- return user.createdAt.getTime() < (Date.now() - (value.sec * 1000));
+ return this.idService.parse(user.id).date.getTime() < (Date.now() - (value.sec * 1000));
}
case 'followersLessThanOrEq': {
return user.followersCount <= value.value;
@@ -382,7 +379,7 @@ export class RoleService implements OnApplicationShutdown {
@bindThis
public async assign(userId: MiUser['id'], roleId: MiRole['id'], expiresAt: Date | null = null, moderator?: MiUser): Promise<void> {
- const now = new Date();
+ const now = Date.now();
const role = await this.rolesRepository.findOneByOrFail({ id: roleId });
@@ -392,7 +389,7 @@ export class RoleService implements OnApplicationShutdown {
});
if (existing) {
- if (existing.expiresAt && (existing.expiresAt.getTime() < now.getTime())) {
+ if (existing.expiresAt && (existing.expiresAt.getTime() < now)) {
await this.roleAssignmentsRepository.delete({
roleId: roleId,
userId: userId,
@@ -403,8 +400,7 @@ export class RoleService implements OnApplicationShutdown {
}
const created = await this.roleAssignmentsRepository.insert({
- id: this.idService.genId(),
- createdAt: now,
+ id: this.idService.gen(now),
expiresAt: expiresAt,
roleId: roleId,
userId: userId,
@@ -485,8 +481,7 @@ export class RoleService implements OnApplicationShutdown {
public async create(values: Partial<MiRole>, moderator?: MiUser): Promise<MiRole> {
const date = new Date();
const created = await this.rolesRepository.insert({
- id: this.idService.genId(),
- createdAt: date,
+ id: this.idService.gen(date.getTime()),
updatedAt: date,
lastUsedAt: date,
name: values.name,
diff --git a/packages/backend/src/core/SearchService.ts b/packages/backend/src/core/SearchService.ts
index 3ef321dd32..b6d2bcabc8 100644
--- a/packages/backend/src/core/SearchService.ts
+++ b/packages/backend/src/core/SearchService.ts
@@ -131,7 +131,7 @@ export class SearchService {
await this.meilisearchNoteIndex?.addDocuments([{
id: note.id,
- createdAt: note.createdAt.getTime(),
+ createdAt: this.idService.parse(note.id).date.getTime(),
userId: note.userId,
userHost: note.userHost,
channelId: note.channelId,
diff --git a/packages/backend/src/core/SignupService.ts b/packages/backend/src/core/SignupService.ts
index dfec0cfcfe..b9e3ded46f 100644
--- a/packages/backend/src/core/SignupService.ts
+++ b/packages/backend/src/core/SignupService.ts
@@ -120,8 +120,7 @@ export class SignupService {
if (exist) throw new Error(' the username is already used');
account = await transactionalEntityManager.save(new MiUser({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
username: username,
usernameLower: username.toLowerCase(),
host: this.utilityService.toPunyNullable(host),
diff --git a/packages/backend/src/core/UserBlockingService.ts b/packages/backend/src/core/UserBlockingService.ts
index 087dfd9214..39b19325c3 100644
--- a/packages/backend/src/core/UserBlockingService.ts
+++ b/packages/backend/src/core/UserBlockingService.ts
@@ -68,8 +68,7 @@ export class UserBlockingService implements OnModuleInit {
]);
const blocking = {
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
blocker,
blockerId: blocker.id,
blockee,
diff --git a/packages/backend/src/core/UserFollowingService.ts b/packages/backend/src/core/UserFollowingService.ts
index beffcc2e9c..f6d0c3a6d5 100644
--- a/packages/backend/src/core/UserFollowingService.ts
+++ b/packages/backend/src/core/UserFollowingService.ts
@@ -196,8 +196,7 @@ export class UserFollowingService implements OnModuleInit {
let alreadyFollowed = false as boolean;
await this.followingsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
followerId: follower.id,
followeeId: followee.id,
@@ -465,8 +464,7 @@ export class UserFollowingService implements OnModuleInit {
if (blocked) throw new Error('blocked');
const followRequest = await this.followRequestsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
followerId: follower.id,
followeeId: followee.id,
requestId,
diff --git a/packages/backend/src/core/UserListService.ts b/packages/backend/src/core/UserListService.ts
index 5b4e7a711e..702c731fc3 100644
--- a/packages/backend/src/core/UserListService.ts
+++ b/packages/backend/src/core/UserListService.ts
@@ -93,8 +93,7 @@ export class UserListService implements OnApplicationShutdown {
}
await this.userListMembershipsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
userId: target.id,
userListId: list.id,
userListUserId: list.userId,
diff --git a/packages/backend/src/core/UserMutingService.ts b/packages/backend/src/core/UserMutingService.ts
index 2387c9d648..397e6bdd5d 100644
--- a/packages/backend/src/core/UserMutingService.ts
+++ b/packages/backend/src/core/UserMutingService.ts
@@ -26,8 +26,7 @@ export class UserMutingService {
@bindThis
public async mute(user: MiUser, target: MiUser, expiresAt: Date | null = null): Promise<void> {
await this.mutingsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
expiresAt: expiresAt ?? null,
muterId: user.id,
muteeId: target.id,
diff --git a/packages/backend/src/core/WebhookService.ts b/packages/backend/src/core/WebhookService.ts
index ff70f7bc0c..930e6ef64a 100644
--- a/packages/backend/src/core/WebhookService.ts
+++ b/packages/backend/src/core/WebhookService.ts
@@ -51,7 +51,6 @@ export class WebhookService implements OnApplicationShutdown {
if (body.active) {
this.webhooks.push({
...body,
- createdAt: new Date(body.createdAt),
latestSentAt: body.latestSentAt ? new Date(body.latestSentAt) : null,
});
}
@@ -62,13 +61,11 @@ export class WebhookService implements OnApplicationShutdown {
if (i > -1) {
this.webhooks[i] = {
...body,
- createdAt: new Date(body.createdAt),
latestSentAt: body.latestSentAt ? new Date(body.latestSentAt) : null,
};
} else {
this.webhooks.push({
...body,
- createdAt: new Date(body.createdAt),
latestSentAt: body.latestSentAt ? new Date(body.latestSentAt) : null,
});
}
diff --git a/packages/backend/src/core/activitypub/ApInboxService.ts b/packages/backend/src/core/activitypub/ApInboxService.ts
index b921ee7454..8d5d34d40b 100644
--- a/packages/backend/src/core/activitypub/ApInboxService.ts
+++ b/packages/backend/src/core/activitypub/ApInboxService.ts
@@ -514,8 +514,7 @@ export class ApInboxService {
if (users.length < 1) return 'skip';
await this.abuseUserReportsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
targetUserId: users[0].id,
targetUserHost: users[0].host,
reporterId: actor.id,
diff --git a/packages/backend/src/core/activitypub/ApRendererService.ts b/packages/backend/src/core/activitypub/ApRendererService.ts
index 7a9d2e21d8..e29bc1d096 100644
--- a/packages/backend/src/core/activitypub/ApRendererService.ts
+++ b/packages/backend/src/core/activitypub/ApRendererService.ts
@@ -27,6 +27,7 @@ import type { UsersRepository, UserProfilesRepository, NotesRepository, DriveFil
import { bindThis } from '@/decorators.js';
import { CustomEmojiService } from '@/core/CustomEmojiService.js';
import { isNotNull } from '@/misc/is-not-null.js';
+import { IdService } from '@/core/IdService.js';
import { LdSignatureService } from './LdSignatureService.js';
import { ApMfmService } from './ApMfmService.js';
import type { IAccept, IActivity, IAdd, IAnnounce, IApDocument, IApEmoji, IApHashtag, IApImage, IApMention, IBlock, ICreate, IDelete, IFlag, IFollow, IKey, ILike, IMove, IObject, IPost, IQuestion, IReject, IRemove, ITombstone, IUndo, IUpdate } from './type.js';
@@ -59,6 +60,7 @@ export class ApRendererService {
private userKeypairService: UserKeypairService,
private apMfmService: ApMfmService,
private mfmService: MfmService,
+ private idService: IdService,
) {
}
@@ -105,7 +107,7 @@ export class ApRendererService {
id: `${this.config.url}/notes/${note.id}/activity`,
actor: this.userEntityService.genLocalUserUri(note.userId),
type: 'Announce',
- published: note.createdAt.toISOString(),
+ published: this.idService.parse(note.id).date.toISOString(),
to,
cc,
object,
@@ -137,7 +139,7 @@ export class ApRendererService {
id: `${this.config.url}/notes/${note.id}/activity`,
actor: this.userEntityService.genLocalUserUri(note.userId),
type: 'Create',
- published: note.createdAt.toISOString(),
+ published: this.idService.parse(note.id).date.toISOString(),
object,
};
@@ -437,7 +439,7 @@ export class ApRendererService {
},
_misskey_quote: quote,
quoteUrl: quote,
- published: note.createdAt.toISOString(),
+ published: this.idService.parse(note.id).date.toISOString(),
to,
cc,
inReplyTo,
diff --git a/packages/backend/src/core/activitypub/models/ApNoteService.ts b/packages/backend/src/core/activitypub/models/ApNoteService.ts
index 573dff5b91..1979cdda9c 100644
--- a/packages/backend/src/core/activitypub/models/ApNoteService.ts
+++ b/packages/backend/src/core/activitypub/models/ApNoteService.ts
@@ -386,7 +386,7 @@ export class ApNoteService {
this.logger.info(`register emoji host=${host}, name=${name}`);
return await this.emojisRepository.insert({
- id: this.idService.genId(),
+ id: this.idService.gen(),
host,
name,
uri: tag.id,
diff --git a/packages/backend/src/core/activitypub/models/ApPersonService.ts b/packages/backend/src/core/activitypub/models/ApPersonService.ts
index ea64883395..47f8d7313e 100644
--- a/packages/backend/src/core/activitypub/models/ApPersonService.ts
+++ b/packages/backend/src/core/activitypub/models/ApPersonService.ts
@@ -295,10 +295,9 @@ export class ApPersonService implements OnModuleInit {
// Start transaction
await this.db.transaction(async transactionalEntityManager => {
user = await transactionalEntityManager.save(new MiUser({
- id: this.idService.genId(),
+ id: this.idService.gen(),
avatarId: null,
bannerId: null,
- createdAt: new Date(),
lastFetchedAt: new Date(),
name: truncate(person.name, nameLength),
isLocked: person.manuallyApprovesFollowers,
@@ -607,8 +606,7 @@ export class ApPersonService implements OnModuleInit {
for (const note of featuredNotes.filter((note): note is MiNote => note != null)) {
td -= 1000;
transactionalEntityManager.insert(MiUserNotePining, {
- id: this.idService.genId(new Date(Date.now() + td)),
- createdAt: new Date(),
+ id: this.idService.gen(Date.now() + td),
userId: user.id,
noteId: note.id,
});
diff --git a/packages/backend/src/core/chart/charts/active-users.ts b/packages/backend/src/core/chart/charts/active-users.ts
index 55da1469e5..f0918e059c 100644
--- a/packages/backend/src/core/chart/charts/active-users.ts
+++ b/packages/backend/src/core/chart/charts/active-users.ts
@@ -9,6 +9,7 @@ import { AppLockService } from '@/core/AppLockService.js';
import type { MiUser } from '@/models/User.js';
import { DI } from '@/di-symbols.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
import Chart from '../core.js';
import { ChartLoggerService } from '../ChartLoggerService.js';
import { name, schema } from './entities/active-users.js';
@@ -29,6 +30,7 @@ export default class ActiveUsersChart extends Chart<typeof schema> { // eslint-d
private appLockService: AppLockService,
private chartLoggerService: ChartLoggerService,
+ private idService: IdService,
) {
super(db, (k) => appLockService.getChartInsertLock(k), chartLoggerService.logger, name, schema);
}
@@ -42,20 +44,21 @@ export default class ActiveUsersChart extends Chart<typeof schema> { // eslint-d
}
@bindThis
- public async read(user: { id: MiUser['id'], host: null, createdAt: MiUser['createdAt'] }): Promise<void> {
+ public async read(user: { id: MiUser['id'], host: null }): Promise<void> {
+ const createdAt = this.idService.parse(user.id).date;
await this.commit({
'read': [user.id],
- 'registeredWithinWeek': (Date.now() - user.createdAt.getTime() < week) ? [user.id] : [],
- 'registeredWithinMonth': (Date.now() - user.createdAt.getTime() < month) ? [user.id] : [],
- 'registeredWithinYear': (Date.now() - user.createdAt.getTime() < year) ? [user.id] : [],
- 'registeredOutsideWeek': (Date.now() - user.createdAt.getTime() > week) ? [user.id] : [],
- 'registeredOutsideMonth': (Date.now() - user.createdAt.getTime() > month) ? [user.id] : [],
- 'registeredOutsideYear': (Date.now() - user.createdAt.getTime() > year) ? [user.id] : [],
+ 'registeredWithinWeek': (Date.now() - createdAt.getTime() < week) ? [user.id] : [],
+ 'registeredWithinMonth': (Date.now() - createdAt.getTime() < month) ? [user.id] : [],
+ 'registeredWithinYear': (Date.now() - createdAt.getTime() < year) ? [user.id] : [],
+ 'registeredOutsideWeek': (Date.now() - createdAt.getTime() > week) ? [user.id] : [],
+ 'registeredOutsideMonth': (Date.now() - createdAt.getTime() > month) ? [user.id] : [],
+ 'registeredOutsideYear': (Date.now() - createdAt.getTime() > year) ? [user.id] : [],
});
}
@bindThis
- public async write(user: { id: MiUser['id'], host: null, createdAt: MiUser['createdAt'] }): Promise<void> {
+ public async write(user: { id: MiUser['id'], host: null }): Promise<void> {
await this.commit({
'write': [user.id],
});
diff --git a/packages/backend/src/core/entities/AbuseUserReportEntityService.ts b/packages/backend/src/core/entities/AbuseUserReportEntityService.ts
index 0e65a10d26..97de891ece 100644
--- a/packages/backend/src/core/entities/AbuseUserReportEntityService.ts
+++ b/packages/backend/src/core/entities/AbuseUserReportEntityService.ts
@@ -9,6 +9,7 @@ import type { AbuseUserReportsRepository } from '@/models/_.js';
import { awaitAll } from '@/misc/prelude/await-all.js';
import type { MiAbuseUserReport } from '@/models/AbuseUserReport.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
import { UserEntityService } from './UserEntityService.js';
@Injectable()
@@ -18,6 +19,7 @@ export class AbuseUserReportEntityService {
private abuseUserReportsRepository: AbuseUserReportsRepository,
private userEntityService: UserEntityService,
+ private idService: IdService,
) {
}
@@ -29,7 +31,7 @@ export class AbuseUserReportEntityService {
return await awaitAll({
id: report.id,
- createdAt: report.createdAt.toISOString(),
+ createdAt: this.idService.parse(report.id).date.toISOString(),
comment: report.comment,
resolved: report.resolved,
reporterId: report.reporterId,
diff --git a/packages/backend/src/core/entities/AntennaEntityService.ts b/packages/backend/src/core/entities/AntennaEntityService.ts
index ed108f2ce5..a9e504d374 100644
--- a/packages/backend/src/core/entities/AntennaEntityService.ts
+++ b/packages/backend/src/core/entities/AntennaEntityService.ts
@@ -9,12 +9,15 @@ import type { AntennasRepository } from '@/models/_.js';
import type { Packed } from '@/misc/json-schema.js';
import type { MiAntenna } from '@/models/Antenna.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
@Injectable()
export class AntennaEntityService {
constructor(
@Inject(DI.antennasRepository)
private antennasRepository: AntennasRepository,
+
+ private idService: IdService,
) {
}
@@ -26,7 +29,7 @@ export class AntennaEntityService {
return {
id: antenna.id,
- createdAt: antenna.createdAt.toISOString(),
+ createdAt: this.idService.parse(antenna.id).date.toISOString(),
name: antenna.name,
keywords: antenna.keywords,
excludeKeywords: antenna.excludeKeywords,
diff --git a/packages/backend/src/core/entities/BlockingEntityService.ts b/packages/backend/src/core/entities/BlockingEntityService.ts
index 44466e24e8..b4760346b7 100644
--- a/packages/backend/src/core/entities/BlockingEntityService.ts
+++ b/packages/backend/src/core/entities/BlockingEntityService.ts
@@ -11,6 +11,7 @@ import type { Packed } from '@/misc/json-schema.js';
import type { MiBlocking } from '@/models/Blocking.js';
import type { MiUser } from '@/models/User.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
import { UserEntityService } from './UserEntityService.js';
@Injectable()
@@ -20,6 +21,7 @@ export class BlockingEntityService {
private blockingsRepository: BlockingsRepository,
private userEntityService: UserEntityService,
+ private idService: IdService,
) {
}
@@ -32,7 +34,7 @@ export class BlockingEntityService {
return await awaitAll({
id: blocking.id,
- createdAt: blocking.createdAt.toISOString(),
+ createdAt: this.idService.parse(blocking.id).date.toISOString(),
blockeeId: blocking.blockeeId,
blockee: this.userEntityService.pack(blocking.blockeeId, me, {
detail: true,
diff --git a/packages/backend/src/core/entities/ChannelEntityService.ts b/packages/backend/src/core/entities/ChannelEntityService.ts
index 094de4d2d5..dd72953c7d 100644
--- a/packages/backend/src/core/entities/ChannelEntityService.ts
+++ b/packages/backend/src/core/entities/ChannelEntityService.ts
@@ -11,6 +11,7 @@ import type { } from '@/models/Blocking.js';
import type { MiUser } from '@/models/User.js';
import type { MiChannel } from '@/models/Channel.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
import { DriveFileEntityService } from './DriveFileEntityService.js';
import { NoteEntityService } from './NoteEntityService.js';
import { In } from 'typeorm';
@@ -38,6 +39,7 @@ export class ChannelEntityService {
private noteEntityService: NoteEntityService,
private driveFileEntityService: DriveFileEntityService,
+ private idService: IdService,
) {
}
@@ -81,7 +83,7 @@ export class ChannelEntityService {
return {
id: channel.id,
- createdAt: channel.createdAt.toISOString(),
+ createdAt: this.idService.parse(channel.id).date.toISOString(),
lastNotedAt: channel.lastNotedAt ? channel.lastNotedAt.toISOString() : null,
name: channel.name,
description: channel.description,
diff --git a/packages/backend/src/core/entities/ClipEntityService.ts b/packages/backend/src/core/entities/ClipEntityService.ts
index e141db03f1..96422894fd 100644
--- a/packages/backend/src/core/entities/ClipEntityService.ts
+++ b/packages/backend/src/core/entities/ClipEntityService.ts
@@ -11,6 +11,7 @@ import type { Packed } from '@/misc/json-schema.js';
import type { } from '@/models/Blocking.js';
import type { MiClip } from '@/models/Clip.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
import { UserEntityService } from './UserEntityService.js';
@Injectable()
@@ -23,6 +24,7 @@ export class ClipEntityService {
private clipFavoritesRepository: ClipFavoritesRepository,
private userEntityService: UserEntityService,
+ private idService: IdService,
) {
}
@@ -36,7 +38,7 @@ export class ClipEntityService {
return await awaitAll({
id: clip.id,
- createdAt: clip.createdAt.toISOString(),
+ createdAt: this.idService.parse(clip.id).date.toISOString(),
lastClippedAt: clip.lastClippedAt ? clip.lastClippedAt.toISOString() : null,
userId: clip.userId,
user: this.userEntityService.pack(clip.user ?? clip.userId),
diff --git a/packages/backend/src/core/entities/DriveFileEntityService.ts b/packages/backend/src/core/entities/DriveFileEntityService.ts
index 23273b0413..5148b2ca9e 100644
--- a/packages/backend/src/core/entities/DriveFileEntityService.ts
+++ b/packages/backend/src/core/entities/DriveFileEntityService.ts
@@ -17,6 +17,7 @@ import { deepClone } from '@/misc/clone.js';
import { bindThis } from '@/decorators.js';
import { isMimeImage } from '@/misc/is-mime-image.js';
import { isNotNull } from '@/misc/is-not-null.js';
+import { IdService } from '@/core/IdService.js';
import { UtilityService } from '../UtilityService.js';
import { VideoProcessingService } from '../VideoProcessingService.js';
import { UserEntityService } from './UserEntityService.js';
@@ -44,6 +45,7 @@ export class DriveFileEntityService {
private utilityService: UtilityService,
private driveFolderEntityService: DriveFolderEntityService,
private videoProcessingService: VideoProcessingService,
+ private idService: IdService,
) {
}
@@ -196,7 +198,7 @@ export class DriveFileEntityService {
return await awaitAll<Packed<'DriveFile'>>({
id: file.id,
- createdAt: file.createdAt.toISOString(),
+ createdAt: this.idService.parse(file.id).date.toISOString(),
name: file.name,
type: file.type,
md5: file.md5,
@@ -231,7 +233,7 @@ export class DriveFileEntityService {
return await awaitAll<Packed<'DriveFile'>>({
id: file.id,
- createdAt: file.createdAt.toISOString(),
+ createdAt: this.idService.parse(file.id).date.toISOString(),
name: file.name,
type: file.type,
md5: file.md5,
diff --git a/packages/backend/src/core/entities/DriveFolderEntityService.ts b/packages/backend/src/core/entities/DriveFolderEntityService.ts
index 55014284bd..8fa78154b9 100644
--- a/packages/backend/src/core/entities/DriveFolderEntityService.ts
+++ b/packages/backend/src/core/entities/DriveFolderEntityService.ts
@@ -11,6 +11,7 @@ import type { Packed } from '@/misc/json-schema.js';
import type { } from '@/models/Blocking.js';
import type { MiDriveFolder } from '@/models/DriveFolder.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
@Injectable()
export class DriveFolderEntityService {
@@ -20,6 +21,8 @@ export class DriveFolderEntityService {
@Inject(DI.driveFilesRepository)
private driveFilesRepository: DriveFilesRepository,
+
+ private idService: IdService,
) {
}
@@ -38,7 +41,7 @@ export class DriveFolderEntityService {
return await awaitAll({
id: folder.id,
- createdAt: folder.createdAt.toISOString(),
+ createdAt: this.idService.parse(folder.id).date.toISOString(),
name: folder.name,
parentId: folder.parentId,
diff --git a/packages/backend/src/core/entities/FlashEntityService.ts b/packages/backend/src/core/entities/FlashEntityService.ts
index 4701cddcba..dc335d9975 100644
--- a/packages/backend/src/core/entities/FlashEntityService.ts
+++ b/packages/backend/src/core/entities/FlashEntityService.ts
@@ -12,6 +12,7 @@ import type { } from '@/models/Blocking.js';
import type { MiUser } from '@/models/User.js';
import type { MiFlash } from '@/models/Flash.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
import { UserEntityService } from './UserEntityService.js';
@Injectable()
@@ -24,6 +25,7 @@ export class FlashEntityService {
private flashLikesRepository: FlashLikesRepository,
private userEntityService: UserEntityService,
+ private idService: IdService,
) {
}
@@ -37,7 +39,7 @@ export class FlashEntityService {
return await awaitAll({
id: flash.id,
- createdAt: flash.createdAt.toISOString(),
+ createdAt: this.idService.parse(flash.id).date.toISOString(),
updatedAt: flash.updatedAt.toISOString(),
userId: flash.userId,
user: this.userEntityService.pack(flash.user ?? flash.userId, me), // { detail: true } すると無限ループするので注意
diff --git a/packages/backend/src/core/entities/FollowingEntityService.ts b/packages/backend/src/core/entities/FollowingEntityService.ts
index 9f6eb51e8c..52aa979677 100644
--- a/packages/backend/src/core/entities/FollowingEntityService.ts
+++ b/packages/backend/src/core/entities/FollowingEntityService.ts
@@ -12,6 +12,7 @@ import type { } from '@/models/Blocking.js';
import type { MiUser } from '@/models/User.js';
import type { MiFollowing } from '@/models/Following.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
import { UserEntityService } from './UserEntityService.js';
type LocalFollowerFollowing = MiFollowing & {
@@ -45,6 +46,7 @@ export class FollowingEntityService {
private followingsRepository: FollowingsRepository,
private userEntityService: UserEntityService,
+ private idService: IdService,
) {
}
@@ -83,7 +85,7 @@ export class FollowingEntityService {
return await awaitAll({
id: following.id,
- createdAt: following.createdAt.toISOString(),
+ createdAt: this.idService.parse(following.id).date.toISOString(),
followeeId: following.followeeId,
followerId: following.followerId,
followee: opts.populateFollowee ? this.userEntityService.pack(following.followee ?? following.followeeId, me, {
diff --git a/packages/backend/src/core/entities/GalleryPostEntityService.ts b/packages/backend/src/core/entities/GalleryPostEntityService.ts
index bbaf70f0fd..d7b960e0d9 100644
--- a/packages/backend/src/core/entities/GalleryPostEntityService.ts
+++ b/packages/backend/src/core/entities/GalleryPostEntityService.ts
@@ -12,6 +12,7 @@ import type { } from '@/models/Blocking.js';
import type { MiUser } from '@/models/User.js';
import type { MiGalleryPost } from '@/models/GalleryPost.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
import { UserEntityService } from './UserEntityService.js';
import { DriveFileEntityService } from './DriveFileEntityService.js';
@@ -26,6 +27,7 @@ export class GalleryPostEntityService {
private userEntityService: UserEntityService,
private driveFileEntityService: DriveFileEntityService,
+ private idService: IdService,
) {
}
@@ -39,7 +41,7 @@ export class GalleryPostEntityService {
return await awaitAll({
id: post.id,
- createdAt: post.createdAt.toISOString(),
+ createdAt: this.idService.parse(post.id).date.toISOString(),
updatedAt: post.updatedAt.toISOString(),
userId: post.userId,
user: this.userEntityService.pack(post.user ?? post.userId, me),
diff --git a/packages/backend/src/core/entities/InviteCodeEntityService.ts b/packages/backend/src/core/entities/InviteCodeEntityService.ts
index 914eaafe68..0f15fb5ab2 100644
--- a/packages/backend/src/core/entities/InviteCodeEntityService.ts
+++ b/packages/backend/src/core/entities/InviteCodeEntityService.ts
@@ -11,6 +11,7 @@ import type { Packed } from '@/misc/json-schema.js';
import type { MiUser } from '@/models/User.js';
import type { MiRegistrationTicket } from '@/models/RegistrationTicket.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
import { UserEntityService } from './UserEntityService.js';
@Injectable()
@@ -20,6 +21,7 @@ export class InviteCodeEntityService {
private registrationTicketsRepository: RegistrationTicketsRepository,
private userEntityService: UserEntityService,
+ private idService: IdService,
) {
}
@@ -39,7 +41,7 @@ export class InviteCodeEntityService {
id: target.id,
code: target.code,
expiresAt: target.expiresAt ? target.expiresAt.toISOString() : null,
- createdAt: target.createdAt.toISOString(),
+ createdAt: this.idService.parse(target.id).date.toISOString(),
createdBy: target.createdBy ? await this.userEntityService.pack(target.createdBy, me) : null,
usedBy: target.usedBy ? await this.userEntityService.pack(target.usedBy, me) : null,
usedAt: target.usedAt ? target.usedAt.toISOString() : null,
diff --git a/packages/backend/src/core/entities/ModerationLogEntityService.ts b/packages/backend/src/core/entities/ModerationLogEntityService.ts
index 83b024d83b..6729ca2671 100644
--- a/packages/backend/src/core/entities/ModerationLogEntityService.ts
+++ b/packages/backend/src/core/entities/ModerationLogEntityService.ts
@@ -10,6 +10,7 @@ import { awaitAll } from '@/misc/prelude/await-all.js';
import type { } from '@/models/Blocking.js';
import type { MiModerationLog } from '@/models/ModerationLog.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
import { UserEntityService } from './UserEntityService.js';
@Injectable()
@@ -19,6 +20,7 @@ export class ModerationLogEntityService {
private moderationLogsRepository: ModerationLogsRepository,
private userEntityService: UserEntityService,
+ private idService: IdService,
) {
}
@@ -30,7 +32,7 @@ export class ModerationLogEntityService {
return await awaitAll({
id: log.id,
- createdAt: log.createdAt.toISOString(),
+ createdAt: this.idService.parse(log.id).date.toISOString(),
type: log.type,
info: log.info,
userId: log.userId,
diff --git a/packages/backend/src/core/entities/MutingEntityService.ts b/packages/backend/src/core/entities/MutingEntityService.ts
index e3d5d2e211..9d672169ba 100644
--- a/packages/backend/src/core/entities/MutingEntityService.ts
+++ b/packages/backend/src/core/entities/MutingEntityService.ts
@@ -12,6 +12,7 @@ import type { } from '@/models/Blocking.js';
import type { MiUser } from '@/models/User.js';
import type { MiMuting } from '@/models/Muting.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
import { UserEntityService } from './UserEntityService.js';
@Injectable()
@@ -21,6 +22,7 @@ export class MutingEntityService {
private mutingsRepository: MutingsRepository,
private userEntityService: UserEntityService,
+ private idService: IdService,
) {
}
@@ -33,7 +35,7 @@ export class MutingEntityService {
return await awaitAll({
id: muting.id,
- createdAt: muting.createdAt.toISOString(),
+ createdAt: this.idService.parse(muting.id).date.toISOString(),
expiresAt: muting.expiresAt ? muting.expiresAt.toISOString() : null,
muteeId: muting.muteeId,
mutee: this.userEntityService.pack(muting.muteeId, me, {
diff --git a/packages/backend/src/core/entities/NoteEntityService.ts b/packages/backend/src/core/entities/NoteEntityService.ts
index f871ba50a8..674594296c 100644
--- a/packages/backend/src/core/entities/NoteEntityService.ts
+++ b/packages/backend/src/core/entities/NoteEntityService.ts
@@ -310,7 +310,7 @@ export class NoteEntityService implements OnModuleInit {
const packed: Packed<'Note'> = await awaitAll({
id: note.id,
- createdAt: note.createdAt.toISOString(),
+ createdAt: this.idService.parse(note.id).date.toISOString(),
userId: note.userId,
user: this.userEntityService.pack(note.user ?? note.userId, me, {
detail: false,
@@ -386,7 +386,8 @@ export class NoteEntityService implements OnModuleInit {
if (meId) {
const renoteIds = notes.filter(n => n.renoteId != null).map(n => n.renoteId!);
// パフォーマンスのためノートが作成されてから2秒以上経っていない場合はリアクションを取得しない
- const targets = [...notes.filter(n => n.createdAt.getTime() + 2000 < Date.now()).map(n => n.id), ...renoteIds];
+ const oldId = this.idService.gen(Date.now() - 2000);
+ const targets = [...notes.filter(n => n.id < oldId).map(n => n.id), ...renoteIds];
const myReactions = await this.noteReactionsRepository.findBy({
userId: meId,
noteId: In(targets),
diff --git a/packages/backend/src/core/entities/NoteFavoriteEntityService.ts b/packages/backend/src/core/entities/NoteFavoriteEntityService.ts
index 808c8c9f69..1c9aed413f 100644
--- a/packages/backend/src/core/entities/NoteFavoriteEntityService.ts
+++ b/packages/backend/src/core/entities/NoteFavoriteEntityService.ts
@@ -10,6 +10,7 @@ import type { } from '@/models/Blocking.js';
import type { MiUser } from '@/models/User.js';
import type { MiNoteFavorite } from '@/models/NoteFavorite.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
import { NoteEntityService } from './NoteEntityService.js';
@Injectable()
@@ -19,6 +20,7 @@ export class NoteFavoriteEntityService {
private noteFavoritesRepository: NoteFavoritesRepository,
private noteEntityService: NoteEntityService,
+ private idService: IdService,
) {
}
@@ -31,7 +33,7 @@ export class NoteFavoriteEntityService {
return {
id: favorite.id,
- createdAt: favorite.createdAt.toISOString(),
+ createdAt: this.idService.parse(favorite.id).date.toISOString(),
noteId: favorite.noteId,
note: await this.noteEntityService.pack(favorite.note ?? favorite.noteId, me),
};
diff --git a/packages/backend/src/core/entities/NoteReactionEntityService.ts b/packages/backend/src/core/entities/NoteReactionEntityService.ts
index 9701f37fdb..f4aba3e543 100644
--- a/packages/backend/src/core/entities/NoteReactionEntityService.ts
+++ b/packages/backend/src/core/entities/NoteReactionEntityService.ts
@@ -8,6 +8,7 @@ import { DI } from '@/di-symbols.js';
import type { NoteReactionsRepository } from '@/models/_.js';
import type { Packed } from '@/misc/json-schema.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
import type { OnModuleInit } from '@nestjs/common';
import type { } from '@/models/Blocking.js';
import type { MiUser } from '@/models/User.js';
@@ -22,6 +23,7 @@ export class NoteReactionEntityService implements OnModuleInit {
private userEntityService: UserEntityService;
private noteEntityService: NoteEntityService;
private reactionService: ReactionService;
+ private idService: IdService;
constructor(
private moduleRef: ModuleRef,
@@ -32,6 +34,7 @@ export class NoteReactionEntityService implements OnModuleInit {
//private userEntityService: UserEntityService,
//private noteEntityService: NoteEntityService,
//private reactionService: ReactionService,
+ //private idService: IdService,
) {
}
@@ -39,6 +42,7 @@ export class NoteReactionEntityService implements OnModuleInit {
this.userEntityService = this.moduleRef.get('UserEntityService');
this.noteEntityService = this.moduleRef.get('NoteEntityService');
this.reactionService = this.moduleRef.get('ReactionService');
+ this.idService = this.moduleRef.get('IdService');
}
@bindThis
@@ -57,7 +61,7 @@ export class NoteReactionEntityService implements OnModuleInit {
return {
id: reaction.id,
- createdAt: reaction.createdAt.toISOString(),
+ createdAt: this.idService.parse(reaction.id).date.toISOString(),
user: await this.userEntityService.pack(reaction.user ?? reaction.userId, me),
type: this.reactionService.convertLegacyReaction(reaction.reaction),
...(opts.withNote ? {
diff --git a/packages/backend/src/core/entities/PageEntityService.ts b/packages/backend/src/core/entities/PageEntityService.ts
index e3a1e19ddd..f39ef949db 100644
--- a/packages/backend/src/core/entities/PageEntityService.ts
+++ b/packages/backend/src/core/entities/PageEntityService.ts
@@ -13,6 +13,7 @@ import type { MiUser } from '@/models/User.js';
import type { MiPage } from '@/models/Page.js';
import type { MiDriveFile } from '@/models/DriveFile.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
import { UserEntityService } from './UserEntityService.js';
import { DriveFileEntityService } from './DriveFileEntityService.js';
@@ -30,6 +31,7 @@ export class PageEntityService {
private userEntityService: UserEntityService,
private driveFileEntityService: DriveFileEntityService,
+ private idService: IdService,
) {
}
@@ -85,7 +87,7 @@ export class PageEntityService {
return await awaitAll({
id: page.id,
- createdAt: page.createdAt.toISOString(),
+ createdAt: this.idService.parse(page.id).date.toISOString(),
updatedAt: page.updatedAt.toISOString(),
userId: page.userId,
user: this.userEntityService.pack(page.user ?? page.userId, me), // { detail: true } すると無限ループするので注意
diff --git a/packages/backend/src/core/entities/RenoteMutingEntityService.ts b/packages/backend/src/core/entities/RenoteMutingEntityService.ts
index 7111fab08a..3f9dc9180a 100644
--- a/packages/backend/src/core/entities/RenoteMutingEntityService.ts
+++ b/packages/backend/src/core/entities/RenoteMutingEntityService.ts
@@ -12,6 +12,7 @@ import type { } from '@/models/Blocking.js';
import type { MiUser } from '@/models/User.js';
import type { MiRenoteMuting } from '@/models/RenoteMuting.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
import { UserEntityService } from './UserEntityService.js';
@Injectable()
@@ -21,6 +22,7 @@ export class RenoteMutingEntityService {
private renoteMutingsRepository: RenoteMutingsRepository,
private userEntityService: UserEntityService,
+ private idService: IdService,
) {
}
@@ -33,7 +35,7 @@ export class RenoteMutingEntityService {
return await awaitAll({
id: muting.id,
- createdAt: muting.createdAt.toISOString(),
+ createdAt: this.idService.parse(muting.id).date.toISOString(),
muteeId: muting.muteeId,
mutee: this.userEntityService.pack(muting.muteeId, me, {
detail: true,
diff --git a/packages/backend/src/core/entities/RoleEntityService.ts b/packages/backend/src/core/entities/RoleEntityService.ts
index 79375a7008..5563f9a1ac 100644
--- a/packages/backend/src/core/entities/RoleEntityService.ts
+++ b/packages/backend/src/core/entities/RoleEntityService.ts
@@ -12,6 +12,7 @@ import type { MiUser } from '@/models/User.js';
import type { MiRole } from '@/models/Role.js';
import { bindThis } from '@/decorators.js';
import { DEFAULT_POLICIES } from '@/core/RoleService.js';
+import { IdService } from '@/core/IdService.js';
@Injectable()
export class RoleEntityService {
@@ -21,6 +22,8 @@ export class RoleEntityService {
@Inject(DI.roleAssignmentsRepository)
private roleAssignmentsRepository: RoleAssignmentsRepository,
+
+ private idService: IdService,
) {
}
@@ -51,7 +54,7 @@ export class RoleEntityService {
return await awaitAll({
id: role.id,
- createdAt: role.createdAt.toISOString(),
+ createdAt: this.idService.parse(role.id).date.toISOString(),
updatedAt: role.updatedAt.toISOString(),
name: role.name,
description: role.description,
diff --git a/packages/backend/src/core/entities/UserEntityService.ts b/packages/backend/src/core/entities/UserEntityService.ts
index ee67634da5..212994feef 100644
--- a/packages/backend/src/core/entities/UserEntityService.ts
+++ b/packages/backend/src/core/entities/UserEntityService.ts
@@ -20,6 +20,7 @@ import { bindThis } from '@/decorators.js';
import { RoleService } from '@/core/RoleService.js';
import { ApPersonService } from '@/core/activitypub/models/ApPersonService.js';
import { FederatedInstanceService } from '@/core/FederatedInstanceService.js';
+import { IdService } from '@/core/IdService.js';
import type { OnModuleInit } from '@nestjs/common';
import type { AnnouncementService } from '../AnnouncementService.js';
import type { CustomEmojiService } from '../CustomEmojiService.js';
@@ -60,6 +61,7 @@ export class UserEntityService implements OnModuleInit {
private announcementService: AnnouncementService;
private roleService: RoleService;
private federatedInstanceService: FederatedInstanceService;
+ private idService: IdService;
constructor(
private moduleRef: ModuleRef,
@@ -111,13 +113,6 @@ export class UserEntityService implements OnModuleInit {
@Inject(DI.userMemosRepository)
private userMemosRepository: UserMemoRepository,
-
- //private noteEntityService: NoteEntityService,
- //private driveFileEntityService: DriveFileEntityService,
- //private pageEntityService: PageEntityService,
- //private customEmojiService: CustomEmojiService,
- //private antennaService: AntennaService,
- //private roleService: RoleService,
) {
}
@@ -130,6 +125,7 @@ export class UserEntityService implements OnModuleInit {
this.announcementService = this.moduleRef.get('AnnouncementService');
this.roleService = this.moduleRef.get('RoleService');
this.federatedInstanceService = this.moduleRef.get('FederatedInstanceService');
+ this.idService = this.moduleRef.get('IdService');
}
//#region Validators
@@ -364,7 +360,7 @@ export class UserEntityService implements OnModuleInit {
? Promise.all(user.alsoKnownAs.map(uri => this.apPersonService.fetchPerson(uri).then(user => user?.id).catch(() => null)))
.then(xs => xs.length === 0 ? null : xs.filter(x => x != null) as string[])
: null,
- createdAt: user.createdAt.toISOString(),
+ createdAt: this.idService.parse(user.id).date.toISOString(),
updatedAt: user.updatedAt ? user.updatedAt.toISOString() : null,
lastFetchedAt: user.lastFetchedAt ? user.lastFetchedAt.toISOString() : null,
bannerUrl: user.bannerUrl,
diff --git a/packages/backend/src/core/entities/UserListEntityService.ts b/packages/backend/src/core/entities/UserListEntityService.ts
index 06b6e852b1..31ab7293da 100644
--- a/packages/backend/src/core/entities/UserListEntityService.ts
+++ b/packages/backend/src/core/entities/UserListEntityService.ts
@@ -10,6 +10,7 @@ import type { Packed } from '@/misc/json-schema.js';
import type { } from '@/models/Blocking.js';
import type { MiUserList } from '@/models/UserList.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
import { UserEntityService } from './UserEntityService.js';
@Injectable()
@@ -22,6 +23,7 @@ export class UserListEntityService {
private userListMembershipsRepository: UserListMembershipsRepository,
private userEntityService: UserEntityService,
+ private idService: IdService,
) {
}
@@ -37,7 +39,7 @@ export class UserListEntityService {
return {
id: userList.id,
- createdAt: userList.createdAt.toISOString(),
+ createdAt: this.idService.parse(userList.id).date.toISOString(),
name: userList.name,
userIds: users.map(x => x.userId),
isPublic: userList.isPublic,
@@ -50,7 +52,7 @@ export class UserListEntityService {
) {
return Promise.all(memberships.map(async x => ({
id: x.id,
- createdAt: x.createdAt.toISOString(),
+ createdAt: this.idService.parse(x.id).date.toISOString(),
userId: x.userId,
user: await this.userEntityService.pack(x.userId),
withReplies: x.withReplies,
diff --git a/packages/backend/src/misc/id/aid.ts b/packages/backend/src/misc/id/aid.ts
index ec8aa849c9..e7b59f262b 100644
--- a/packages/backend/src/misc/id/aid.ts
+++ b/packages/backend/src/misc/id/aid.ts
@@ -24,8 +24,7 @@ function getNoise(): string {
return counter.toString(36).padStart(2, '0').slice(-2);
}
-export function genAid(date: Date): string {
- const t = date.getTime();
+export function genAid(t: number): string {
if (isNaN(t)) throw new Error('Failed to create AID: Invalid Date');
counter++;
return getTime(t) + getNoise();
diff --git a/packages/backend/src/misc/id/aidx.ts b/packages/backend/src/misc/id/aidx.ts
index 5b031ea4c0..bed223225a 100644
--- a/packages/backend/src/misc/id/aidx.ts
+++ b/packages/backend/src/misc/id/aidx.ts
@@ -31,8 +31,7 @@ function getNoise(): string {
return counter.toString(36).padStart(NOISE_LENGTH, '0').slice(-NOISE_LENGTH);
}
-export function genAidx(date: Date): string {
- const t = date.getTime();
+export function genAidx(t: number): string {
if (isNaN(t)) throw new Error('Failed to create AIDX: Invalid Date');
counter++;
return getTime(t) + nodeId + getNoise();
diff --git a/packages/backend/src/misc/id/meid.ts b/packages/backend/src/misc/id/meid.ts
index 82cda37237..366738de05 100644
--- a/packages/backend/src/misc/id/meid.ts
+++ b/packages/backend/src/misc/id/meid.ts
@@ -29,8 +29,8 @@ function getRandom() {
return str;
}
-export function genMeid(date: Date): string {
- return getTime(date.getTime()) + getRandom();
+export function genMeid(t: number): string {
+ return getTime(t) + getRandom();
}
export function parseMeid(id: string): { date: Date; } {
diff --git a/packages/backend/src/misc/id/meidg.ts b/packages/backend/src/misc/id/meidg.ts
index fba7156718..426a46970b 100644
--- a/packages/backend/src/misc/id/meidg.ts
+++ b/packages/backend/src/misc/id/meidg.ts
@@ -29,8 +29,8 @@ function getRandom() {
return str;
}
-export function genMeidg(date: Date): string {
- return 'g' + getTime(date.getTime()) + getRandom();
+export function genMeidg(t: number): string {
+ return 'g' + getTime(t) + getRandom();
}
export function parseMeidg(id: string): { date: Date; } {
diff --git a/packages/backend/src/misc/id/object-id.ts b/packages/backend/src/misc/id/object-id.ts
index e3b6e8e433..49bd9591c0 100644
--- a/packages/backend/src/misc/id/object-id.ts
+++ b/packages/backend/src/misc/id/object-id.ts
@@ -29,8 +29,8 @@ function getRandom() {
return str;
}
-export function genObjectId(date: Date): string {
- return getTime(date.getTime()) + getRandom();
+export function genObjectId(t: number): string {
+ return getTime(t) + getRandom();
}
export function parseObjectId(id: string): { date: Date; } {
diff --git a/packages/backend/src/models/AbuseUserReport.ts b/packages/backend/src/models/AbuseUserReport.ts
index 2551af7cb6..593c44f66b 100644
--- a/packages/backend/src/models/AbuseUserReport.ts
+++ b/packages/backend/src/models/AbuseUserReport.ts
@@ -13,12 +13,6 @@ export class MiAbuseUserReport {
public id: string;
@Index()
- @Column('timestamp with time zone', {
- comment: 'The created date of the AbuseUserReport.',
- })
- public createdAt: Date;
-
- @Index()
@Column(id())
public targetUserId: MiUser['id'];
diff --git a/packages/backend/src/models/AccessToken.ts b/packages/backend/src/models/AccessToken.ts
index 5a6269a729..452711eb8c 100644
--- a/packages/backend/src/models/AccessToken.ts
+++ b/packages/backend/src/models/AccessToken.ts
@@ -14,11 +14,6 @@ export class MiAccessToken {
public id: string;
@Column('timestamp with time zone', {
- comment: 'The created date of the AccessToken.',
- })
- public createdAt: Date;
-
- @Column('timestamp with time zone', {
nullable: true,
})
public lastUsedAt: Date | null;
diff --git a/packages/backend/src/models/Ad.ts b/packages/backend/src/models/Ad.ts
index 6dfc9cb30e..b1d7d7d79e 100644
--- a/packages/backend/src/models/Ad.ts
+++ b/packages/backend/src/models/Ad.ts
@@ -13,12 +13,6 @@ export class MiAd {
@Index()
@Column('timestamp with time zone', {
- comment: 'The created date of the Ad.',
- })
- public createdAt: Date;
-
- @Index()
- @Column('timestamp with time zone', {
comment: 'The expired date of the Ad.',
})
public expiresAt: Date;
diff --git a/packages/backend/src/models/Announcement.ts b/packages/backend/src/models/Announcement.ts
index 34b092a8d4..05d5a086f1 100644
--- a/packages/backend/src/models/Announcement.ts
+++ b/packages/backend/src/models/Announcement.ts
@@ -12,12 +12,6 @@ export class MiAnnouncement {
@PrimaryColumn(id())
public id: string;
- @Index()
- @Column('timestamp with time zone', {
- comment: 'The created date of the Announcement.',
- })
- public createdAt: Date;
-
@Column('timestamp with time zone', {
comment: 'The updated date of the Announcement.',
nullable: true,
diff --git a/packages/backend/src/models/AnnouncementRead.ts b/packages/backend/src/models/AnnouncementRead.ts
index 3d6ec5652c..db09e65f50 100644
--- a/packages/backend/src/models/AnnouncementRead.ts
+++ b/packages/backend/src/models/AnnouncementRead.ts
@@ -14,11 +14,6 @@ export class MiAnnouncementRead {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone', {
- comment: 'The created date of the AnnouncementRead.',
- })
- public createdAt: Date;
-
@Index()
@Column(id())
public userId: MiUser['id'];
diff --git a/packages/backend/src/models/Antenna.ts b/packages/backend/src/models/Antenna.ts
index dc398b6dd2..0bc0084fc5 100644
--- a/packages/backend/src/models/Antenna.ts
+++ b/packages/backend/src/models/Antenna.ts
@@ -13,11 +13,6 @@ export class MiAntenna {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone', {
- comment: 'The created date of the Antenna.',
- })
- public createdAt: Date;
-
@Index()
@Column('timestamp with time zone')
public lastUsedAt: Date;
diff --git a/packages/backend/src/models/App.ts b/packages/backend/src/models/App.ts
index c599ef8be0..5c56a224a2 100644
--- a/packages/backend/src/models/App.ts
+++ b/packages/backend/src/models/App.ts
@@ -13,12 +13,6 @@ export class MiApp {
public id: string;
@Index()
- @Column('timestamp with time zone', {
- comment: 'The created date of the App.',
- })
- public createdAt: Date;
-
- @Index()
@Column({
...id(),
nullable: true,
diff --git a/packages/backend/src/models/AuthSession.ts b/packages/backend/src/models/AuthSession.ts
index d9de6b6979..81bed21211 100644
--- a/packages/backend/src/models/AuthSession.ts
+++ b/packages/backend/src/models/AuthSession.ts
@@ -13,11 +13,6 @@ export class MiAuthSession {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone', {
- comment: 'The created date of the AuthSession.',
- })
- public createdAt: Date;
-
@Index()
@Column('varchar', {
length: 128,
diff --git a/packages/backend/src/models/Blocking.ts b/packages/backend/src/models/Blocking.ts
index 1e3dd3a644..9bf7a63b6e 100644
--- a/packages/backend/src/models/Blocking.ts
+++ b/packages/backend/src/models/Blocking.ts
@@ -14,12 +14,6 @@ export class MiBlocking {
public id: string;
@Index()
- @Column('timestamp with time zone', {
- comment: 'The created date of the Blocking.',
- })
- public createdAt: Date;
-
- @Index()
@Column({
...id(),
comment: 'The blockee user ID.',
diff --git a/packages/backend/src/models/Channel.ts b/packages/backend/src/models/Channel.ts
index ae3886a657..f90f8c03d8 100644
--- a/packages/backend/src/models/Channel.ts
+++ b/packages/backend/src/models/Channel.ts
@@ -15,12 +15,6 @@ export class MiChannel {
@Index()
@Column('timestamp with time zone', {
- comment: 'The created date of the Channel.',
- })
- public createdAt: Date;
-
- @Index()
- @Column('timestamp with time zone', {
nullable: true,
})
public lastNotedAt: Date | null;
diff --git a/packages/backend/src/models/ChannelFavorite.ts b/packages/backend/src/models/ChannelFavorite.ts
index ab74aa5530..fc25ffe260 100644
--- a/packages/backend/src/models/ChannelFavorite.ts
+++ b/packages/backend/src/models/ChannelFavorite.ts
@@ -15,12 +15,6 @@ export class MiChannelFavorite {
public id: string;
@Index()
- @Column('timestamp with time zone', {
- comment: 'The created date of the ChannelFavorite.',
- })
- public createdAt: Date;
-
- @Index()
@Column({
...id(),
})
diff --git a/packages/backend/src/models/ChannelFollowing.ts b/packages/backend/src/models/ChannelFollowing.ts
index c62a95332a..4dd391a082 100644
--- a/packages/backend/src/models/ChannelFollowing.ts
+++ b/packages/backend/src/models/ChannelFollowing.ts
@@ -15,12 +15,6 @@ export class MiChannelFollowing {
public id: string;
@Index()
- @Column('timestamp with time zone', {
- comment: 'The created date of the ChannelFollowing.',
- })
- public createdAt: Date;
-
- @Index()
@Column({
...id(),
comment: 'The followee channel ID.',
diff --git a/packages/backend/src/models/Clip.ts b/packages/backend/src/models/Clip.ts
index c60b2964e0..2483b0925a 100644
--- a/packages/backend/src/models/Clip.ts
+++ b/packages/backend/src/models/Clip.ts
@@ -12,11 +12,6 @@ export class MiClip {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone', {
- comment: 'The created date of the Clip.',
- })
- public createdAt: Date;
-
@Index()
@Column('timestamp with time zone', {
nullable: true,
diff --git a/packages/backend/src/models/ClipFavorite.ts b/packages/backend/src/models/ClipFavorite.ts
index 054764389b..aa949b3ea8 100644
--- a/packages/backend/src/models/ClipFavorite.ts
+++ b/packages/backend/src/models/ClipFavorite.ts
@@ -14,9 +14,6 @@ export class MiClipFavorite {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone')
- public createdAt: Date;
-
@Index()
@Column(id())
public userId: MiUser['id'];
diff --git a/packages/backend/src/models/DriveFile.ts b/packages/backend/src/models/DriveFile.ts
index c12f0e0f02..24e6be9c90 100644
--- a/packages/backend/src/models/DriveFile.ts
+++ b/packages/backend/src/models/DriveFile.ts
@@ -15,12 +15,6 @@ export class MiDriveFile {
public id: string;
@Index()
- @Column('timestamp with time zone', {
- comment: 'The created date of the DriveFile.',
- })
- public createdAt: Date;
-
- @Index()
@Column({
...id(),
nullable: true,
diff --git a/packages/backend/src/models/DriveFolder.ts b/packages/backend/src/models/DriveFolder.ts
index 3e049136bd..18f6d17709 100644
--- a/packages/backend/src/models/DriveFolder.ts
+++ b/packages/backend/src/models/DriveFolder.ts
@@ -12,12 +12,6 @@ export class MiDriveFolder {
@PrimaryColumn(id())
public id: string;
- @Index()
- @Column('timestamp with time zone', {
- comment: 'The created date of the DriveFolder.',
- })
- public createdAt: Date;
-
@Column('varchar', {
length: 128,
comment: 'The name of the DriveFolder.',
diff --git a/packages/backend/src/models/Flash.ts b/packages/backend/src/models/Flash.ts
index 185063029d..ac880843b0 100644
--- a/packages/backend/src/models/Flash.ts
+++ b/packages/backend/src/models/Flash.ts
@@ -14,12 +14,6 @@ export class MiFlash {
@Index()
@Column('timestamp with time zone', {
- comment: 'The created date of the Flash.',
- })
- public createdAt: Date;
-
- @Index()
- @Column('timestamp with time zone', {
comment: 'The updated date of the Flash.',
})
public updatedAt: Date;
diff --git a/packages/backend/src/models/FlashLike.ts b/packages/backend/src/models/FlashLike.ts
index 7c66010ae6..ad7f4966b4 100644
--- a/packages/backend/src/models/FlashLike.ts
+++ b/packages/backend/src/models/FlashLike.ts
@@ -14,9 +14,6 @@ export class MiFlashLike {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone')
- public createdAt: Date;
-
@Index()
@Column(id())
public userId: MiUser['id'];
diff --git a/packages/backend/src/models/FollowRequest.ts b/packages/backend/src/models/FollowRequest.ts
index 769b9a6cb5..1e907f3d68 100644
--- a/packages/backend/src/models/FollowRequest.ts
+++ b/packages/backend/src/models/FollowRequest.ts
@@ -13,11 +13,6 @@ export class MiFollowRequest {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone', {
- comment: 'The created date of the FollowRequest.',
- })
- public createdAt: Date;
-
@Index()
@Column({
...id(),
diff --git a/packages/backend/src/models/Following.ts b/packages/backend/src/models/Following.ts
index 607538b1e7..e320911a1d 100644
--- a/packages/backend/src/models/Following.ts
+++ b/packages/backend/src/models/Following.ts
@@ -15,12 +15,6 @@ export class MiFollowing {
public id: string;
@Index()
- @Column('timestamp with time zone', {
- comment: 'The created date of the Following.',
- })
- public createdAt: Date;
-
- @Index()
@Column({
...id(),
comment: 'The followee user ID.',
diff --git a/packages/backend/src/models/GalleryLike.ts b/packages/backend/src/models/GalleryLike.ts
index b5f71764aa..84d4ce9c3e 100644
--- a/packages/backend/src/models/GalleryLike.ts
+++ b/packages/backend/src/models/GalleryLike.ts
@@ -14,9 +14,6 @@ export class MiGalleryLike {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone')
- public createdAt: Date;
-
@Index()
@Column(id())
public userId: MiUser['id'];
diff --git a/packages/backend/src/models/GalleryPost.ts b/packages/backend/src/models/GalleryPost.ts
index 4c6063f32b..b72220caf9 100644
--- a/packages/backend/src/models/GalleryPost.ts
+++ b/packages/backend/src/models/GalleryPost.ts
@@ -15,12 +15,6 @@ export class MiGalleryPost {
@Index()
@Column('timestamp with time zone', {
- comment: 'The created date of the GalleryPost.',
- })
- public createdAt: Date;
-
- @Index()
- @Column('timestamp with time zone', {
comment: 'The updated date of the GalleryPost.',
})
public updatedAt: Date;
diff --git a/packages/backend/src/models/ModerationLog.ts b/packages/backend/src/models/ModerationLog.ts
index a12b6ab614..71b33c3e47 100644
--- a/packages/backend/src/models/ModerationLog.ts
+++ b/packages/backend/src/models/ModerationLog.ts
@@ -12,11 +12,6 @@ export class MiModerationLog {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone', {
- comment: 'The created date of the ModerationLog.',
- })
- public createdAt: Date;
-
@Index()
@Column(id())
public userId: MiUser['id'];
diff --git a/packages/backend/src/models/Muting.ts b/packages/backend/src/models/Muting.ts
index 2f06ca8e5e..a528e1e7d7 100644
--- a/packages/backend/src/models/Muting.ts
+++ b/packages/backend/src/models/Muting.ts
@@ -15,12 +15,6 @@ export class MiMuting {
@Index()
@Column('timestamp with time zone', {
- comment: 'The created date of the Muting.',
- })
- public createdAt: Date;
-
- @Index()
- @Column('timestamp with time zone', {
nullable: true,
})
public expiresAt: Date | null;
diff --git a/packages/backend/src/models/Note.ts b/packages/backend/src/models/Note.ts
index 3e2adf4d82..ac7f57d5d6 100644
--- a/packages/backend/src/models/Note.ts
+++ b/packages/backend/src/models/Note.ts
@@ -18,11 +18,6 @@ export class MiNote {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone', {
- comment: 'The created date of the Note.',
- })
- public createdAt: Date;
-
@Index()
@Column({
...id(),
diff --git a/packages/backend/src/models/NoteFavorite.ts b/packages/backend/src/models/NoteFavorite.ts
index 1171684bcf..364eaabd98 100644
--- a/packages/backend/src/models/NoteFavorite.ts
+++ b/packages/backend/src/models/NoteFavorite.ts
@@ -14,11 +14,6 @@ export class MiNoteFavorite {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone', {
- comment: 'The created date of the NoteFavorite.',
- })
- public createdAt: Date;
-
@Index()
@Column(id())
public userId: MiUser['id'];
diff --git a/packages/backend/src/models/NoteReaction.ts b/packages/backend/src/models/NoteReaction.ts
index 43323f8a43..ee3a447464 100644
--- a/packages/backend/src/models/NoteReaction.ts
+++ b/packages/backend/src/models/NoteReaction.ts
@@ -14,11 +14,6 @@ export class MiNoteReaction {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone', {
- comment: 'The created date of the NoteReaction.',
- })
- public createdAt: Date;
-
@Index()
@Column(id())
public userId: MiUser['id'];
diff --git a/packages/backend/src/models/NoteThreadMuting.ts b/packages/backend/src/models/NoteThreadMuting.ts
index 2d120e4c25..00311aa570 100644
--- a/packages/backend/src/models/NoteThreadMuting.ts
+++ b/packages/backend/src/models/NoteThreadMuting.ts
@@ -13,10 +13,6 @@ export class MiNoteThreadMuting {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone', {
- })
- public createdAt: Date;
-
@Index()
@Column({
...id(),
diff --git a/packages/backend/src/models/Page.ts b/packages/backend/src/models/Page.ts
index 3cb986f4ee..9cab875499 100644
--- a/packages/backend/src/models/Page.ts
+++ b/packages/backend/src/models/Page.ts
@@ -16,12 +16,6 @@ export class MiPage {
@Index()
@Column('timestamp with time zone', {
- comment: 'The created date of the Page.',
- })
- public createdAt: Date;
-
- @Index()
- @Column('timestamp with time zone', {
comment: 'The updated date of the Page.',
})
public updatedAt: Date;
diff --git a/packages/backend/src/models/PageLike.ts b/packages/backend/src/models/PageLike.ts
index 92adf9bcc2..b845f58b7d 100644
--- a/packages/backend/src/models/PageLike.ts
+++ b/packages/backend/src/models/PageLike.ts
@@ -14,9 +14,6 @@ export class MiPageLike {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone')
- public createdAt: Date;
-
@Index()
@Column(id())
public userId: MiUser['id'];
diff --git a/packages/backend/src/models/PasswordResetRequest.ts b/packages/backend/src/models/PasswordResetRequest.ts
index 79f2e984b8..5be439511f 100644
--- a/packages/backend/src/models/PasswordResetRequest.ts
+++ b/packages/backend/src/models/PasswordResetRequest.ts
@@ -12,9 +12,6 @@ export class MiPasswordResetRequest {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone')
- public createdAt: Date;
-
@Index({ unique: true })
@Column('varchar', {
length: 256,
diff --git a/packages/backend/src/models/PollVote.ts b/packages/backend/src/models/PollVote.ts
index 37cd55fc18..751be8a32b 100644
--- a/packages/backend/src/models/PollVote.ts
+++ b/packages/backend/src/models/PollVote.ts
@@ -15,12 +15,6 @@ export class MiPollVote {
public id: string;
@Index()
- @Column('timestamp with time zone', {
- comment: 'The created date of the PollVote.',
- })
- public createdAt: Date;
-
- @Index()
@Column(id())
public userId: MiUser['id'];
diff --git a/packages/backend/src/models/PromoRead.ts b/packages/backend/src/models/PromoRead.ts
index 09ebfc8346..d9f3075416 100644
--- a/packages/backend/src/models/PromoRead.ts
+++ b/packages/backend/src/models/PromoRead.ts
@@ -14,11 +14,6 @@ export class MiPromoRead {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone', {
- comment: 'The created date of the PromoRead.',
- })
- public createdAt: Date;
-
@Index()
@Column(id())
public userId: MiUser['id'];
diff --git a/packages/backend/src/models/RegistrationTicket.ts b/packages/backend/src/models/RegistrationTicket.ts
index d94f465916..730cedffba 100644
--- a/packages/backend/src/models/RegistrationTicket.ts
+++ b/packages/backend/src/models/RegistrationTicket.ts
@@ -23,9 +23,6 @@ export class MiRegistrationTicket {
})
public expiresAt: Date | null;
- @Column('timestamp with time zone')
- public createdAt: Date;
-
@ManyToOne(type => MiUser, {
onDelete: 'CASCADE',
})
diff --git a/packages/backend/src/models/RegistryItem.ts b/packages/backend/src/models/RegistryItem.ts
index fdce57c467..60bdced957 100644
--- a/packages/backend/src/models/RegistryItem.ts
+++ b/packages/backend/src/models/RegistryItem.ts
@@ -14,11 +14,6 @@ export class MiRegistryItem {
public id: string;
@Column('timestamp with time zone', {
- comment: 'The created date of the RegistryItem.',
- })
- public createdAt: Date;
-
- @Column('timestamp with time zone', {
comment: 'The updated date of the RegistryItem.',
})
public updatedAt: Date;
diff --git a/packages/backend/src/models/RenoteMuting.ts b/packages/backend/src/models/RenoteMuting.ts
index d2a36249dc..17df43ea31 100644
--- a/packages/backend/src/models/RenoteMuting.ts
+++ b/packages/backend/src/models/RenoteMuting.ts
@@ -14,12 +14,6 @@ export class MiRenoteMuting {
public id: string;
@Index()
- @Column('timestamp with time zone', {
- comment: 'The created date of the Muting.',
- })
- public createdAt: Date;
-
- @Index()
@Column({
...id(),
comment: 'The mutee user ID.',
diff --git a/packages/backend/src/models/Role.ts b/packages/backend/src/models/Role.ts
index df7541db3d..6976956e13 100644
--- a/packages/backend/src/models/Role.ts
+++ b/packages/backend/src/models/Role.ts
@@ -90,11 +90,6 @@ export class MiRole {
public id: string;
@Column('timestamp with time zone', {
- comment: 'The created date of the Role.',
- })
- public createdAt: Date;
-
- @Column('timestamp with time zone', {
comment: 'The updated date of the Role.',
})
public updatedAt: Date;
diff --git a/packages/backend/src/models/RoleAssignment.ts b/packages/backend/src/models/RoleAssignment.ts
index 4e5322c60b..30c7e19f2a 100644
--- a/packages/backend/src/models/RoleAssignment.ts
+++ b/packages/backend/src/models/RoleAssignment.ts
@@ -14,11 +14,6 @@ export class MiRoleAssignment {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone', {
- comment: 'The created date of the RoleAssignment.',
- })
- public createdAt: Date;
-
@Index()
@Column({
...id(),
diff --git a/packages/backend/src/models/Signin.ts b/packages/backend/src/models/Signin.ts
index a8b1a45c53..656b44dfe0 100644
--- a/packages/backend/src/models/Signin.ts
+++ b/packages/backend/src/models/Signin.ts
@@ -12,11 +12,6 @@ export class MiSignin {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone', {
- comment: 'The created date of the Signin.',
- })
- public createdAt: Date;
-
@Index()
@Column(id())
public userId: MiUser['id'];
diff --git a/packages/backend/src/models/SwSubscription.ts b/packages/backend/src/models/SwSubscription.ts
index be1e4e3687..f685a8ff3e 100644
--- a/packages/backend/src/models/SwSubscription.ts
+++ b/packages/backend/src/models/SwSubscription.ts
@@ -12,9 +12,6 @@ export class MiSwSubscription {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone')
- public createdAt: Date;
-
@Index()
@Column(id())
public userId: MiUser['id'];
diff --git a/packages/backend/src/models/User.ts b/packages/backend/src/models/User.ts
index 4d961c4290..796d7c8356 100644
--- a/packages/backend/src/models/User.ts
+++ b/packages/backend/src/models/User.ts
@@ -15,12 +15,6 @@ export class MiUser {
@Index()
@Column('timestamp with time zone', {
- comment: 'The created date of the User.',
- })
- public createdAt: Date;
-
- @Index()
- @Column('timestamp with time zone', {
nullable: true,
comment: 'The updated date of the User.',
})
diff --git a/packages/backend/src/models/UserList.ts b/packages/backend/src/models/UserList.ts
index 9af85af97e..7ad15419d7 100644
--- a/packages/backend/src/models/UserList.ts
+++ b/packages/backend/src/models/UserList.ts
@@ -12,11 +12,6 @@ export class MiUserList {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone', {
- comment: 'The created date of the UserList.',
- })
- public createdAt: Date;
-
@Index()
@Column({
...id(),
diff --git a/packages/backend/src/models/UserListFavorite.ts b/packages/backend/src/models/UserListFavorite.ts
index d0b054b932..a18ed9253a 100644
--- a/packages/backend/src/models/UserListFavorite.ts
+++ b/packages/backend/src/models/UserListFavorite.ts
@@ -14,9 +14,6 @@ export class MiUserListFavorite {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone')
- public createdAt: Date;
-
@Index()
@Column(id())
public userId: MiUser['id'];
diff --git a/packages/backend/src/models/UserListMembership.ts b/packages/backend/src/models/UserListMembership.ts
index f57f9ac33d..fa8287f17a 100644
--- a/packages/backend/src/models/UserListMembership.ts
+++ b/packages/backend/src/models/UserListMembership.ts
@@ -14,11 +14,6 @@ export class MiUserListMembership {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone', {
- comment: 'The created date of the UserListMembership.',
- })
- public createdAt: Date;
-
@Index()
@Column({
...id(),
diff --git a/packages/backend/src/models/UserNotePining.ts b/packages/backend/src/models/UserNotePining.ts
index 1d50a5068e..ae5977aa56 100644
--- a/packages/backend/src/models/UserNotePining.ts
+++ b/packages/backend/src/models/UserNotePining.ts
@@ -14,11 +14,6 @@ export class MiUserNotePining {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone', {
- comment: 'The created date of the UserNotePinings.',
- })
- public createdAt: Date;
-
@Index()
@Column(id())
public userId: MiUser['id'];
diff --git a/packages/backend/src/models/UserPending.ts b/packages/backend/src/models/UserPending.ts
index b15ededa14..8b1f8f617f 100644
--- a/packages/backend/src/models/UserPending.ts
+++ b/packages/backend/src/models/UserPending.ts
@@ -11,9 +11,6 @@ export class MiUserPending {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone')
- public createdAt: Date;
-
@Index({ unique: true })
@Column('varchar', {
length: 128,
diff --git a/packages/backend/src/models/Webhook.ts b/packages/backend/src/models/Webhook.ts
index 5b009c18a6..ec4e13cc76 100644
--- a/packages/backend/src/models/Webhook.ts
+++ b/packages/backend/src/models/Webhook.ts
@@ -14,11 +14,6 @@ export class MiWebhook {
@PrimaryColumn(id())
public id: string;
- @Column('timestamp with time zone', {
- comment: 'The created date of the Antenna.',
- })
- public createdAt: Date;
-
@Index()
@Column({
...id(),
diff --git a/packages/backend/src/queue/processors/AggregateRetentionProcessorService.ts b/packages/backend/src/queue/processors/AggregateRetentionProcessorService.ts
index 5aac3f19e8..9f49d85c7f 100644
--- a/packages/backend/src/queue/processors/AggregateRetentionProcessorService.ts
+++ b/packages/backend/src/queue/processors/AggregateRetentionProcessorService.ts
@@ -47,13 +47,13 @@ export class AggregateRetentionProcessorService {
// 今日登録したユーザーを全て取得
const targetUsers = await this.usersRepository.findBy({
host: IsNull(),
- createdAt: MoreThan(new Date(Date.now() - (1000 * 60 * 60 * 24))),
+ id: MoreThan(this.idService.gen(Date.now() - (1000 * 60 * 60 * 24))),
});
const targetUserIds = targetUsers.map(u => u.id);
try {
await this.retentionAggregationsRepository.insert({
- id: this.idService.genId(),
+ id: this.idService.gen(),
createdAt: now,
updatedAt: now,
dateKey,
diff --git a/packages/backend/src/queue/processors/ExportFavoritesProcessorService.ts b/packages/backend/src/queue/processors/ExportFavoritesProcessorService.ts
index 7248c7a649..af2a3434a9 100644
--- a/packages/backend/src/queue/processors/ExportFavoritesProcessorService.ts
+++ b/packages/backend/src/queue/processors/ExportFavoritesProcessorService.ts
@@ -15,6 +15,7 @@ import { createTemp } from '@/misc/create-temp.js';
import type { MiPoll } from '@/models/Poll.js';
import type { MiNote } from '@/models/Note.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type * as Bull from 'bullmq';
import type { DbJobDataWithUser } from '../types.js';
@@ -35,6 +36,7 @@ export class ExportFavoritesProcessorService {
private driveService: DriveService,
private queueLoggerService: QueueLoggerService,
+ private idService: IdService,
) {
this.logger = this.queueLoggerService.logger.createSubLogger('export-favorites');
}
@@ -99,7 +101,7 @@ export class ExportFavoritesProcessorService {
if (favorite.note.hasPoll) {
poll = await this.pollsRepository.findOneByOrFail({ noteId: favorite.note.id });
}
- const content = JSON.stringify(serialize(favorite, poll));
+ const content = JSON.stringify(this.serialize(favorite, poll));
const isFirst = exportedFavoritesCount === 0;
await write(isFirst ? content : ',\n' + content);
exportedFavoritesCount++;
@@ -125,34 +127,34 @@ export class ExportFavoritesProcessorService {
cleanup();
}
}
-}
-function serialize(favorite: MiNoteFavorite & { note: MiNote & { user: MiUser } }, poll: MiPoll | null = null): Record<string, unknown> {
- return {
- id: favorite.id,
- createdAt: favorite.createdAt,
- note: {
- id: favorite.note.id,
- text: favorite.note.text,
- createdAt: favorite.note.createdAt,
- fileIds: favorite.note.fileIds,
- replyId: favorite.note.replyId,
- renoteId: favorite.note.renoteId,
- poll: poll,
- cw: favorite.note.cw,
- visibility: favorite.note.visibility,
- visibleUserIds: favorite.note.visibleUserIds,
- localOnly: favorite.note.localOnly,
- reactionAcceptance: favorite.note.reactionAcceptance,
- uri: favorite.note.uri,
- url: favorite.note.url,
- user: {
- id: favorite.note.user.id,
- name: favorite.note.user.name,
- username: favorite.note.user.username,
- host: favorite.note.user.host,
- uri: favorite.note.user.uri,
+ private serialize(favorite: MiNoteFavorite & { note: MiNote & { user: MiUser } }, poll: MiPoll | null = null): Record<string, unknown> {
+ return {
+ id: favorite.id,
+ createdAt: this.idService.parse(favorite.id).date.toISOString(),
+ note: {
+ id: favorite.note.id,
+ text: favorite.note.text,
+ createdAt: this.idService.parse(favorite.note.id).date.toISOString(),
+ fileIds: favorite.note.fileIds,
+ replyId: favorite.note.replyId,
+ renoteId: favorite.note.renoteId,
+ poll: poll,
+ cw: favorite.note.cw,
+ visibility: favorite.note.visibility,
+ visibleUserIds: favorite.note.visibleUserIds,
+ localOnly: favorite.note.localOnly,
+ reactionAcceptance: favorite.note.reactionAcceptance,
+ uri: favorite.note.uri,
+ url: favorite.note.url,
+ user: {
+ id: favorite.note.user.id,
+ name: favorite.note.user.name,
+ username: favorite.note.user.username,
+ host: favorite.note.user.host,
+ uri: favorite.note.user.uri,
+ },
},
- },
- };
+ };
+ }
}
diff --git a/packages/backend/src/queue/processors/ExportNotesProcessorService.ts b/packages/backend/src/queue/processors/ExportNotesProcessorService.ts
index e0bc80e190..cd4ccb0b07 100644
--- a/packages/backend/src/queue/processors/ExportNotesProcessorService.ts
+++ b/packages/backend/src/queue/processors/ExportNotesProcessorService.ts
@@ -17,6 +17,7 @@ import type { MiNote } from '@/models/Note.js';
import { bindThis } from '@/decorators.js';
import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.js';
import { Packed } from '@/misc/json-schema.js';
+import { IdService } from '@/core/IdService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type * as Bull from 'bullmq';
import type { DbJobDataWithUser } from '../types.js';
@@ -37,8 +38,8 @@ export class ExportNotesProcessorService {
private driveService: DriveService,
private queueLoggerService: QueueLoggerService,
-
private driveFileEntityService: DriveFileEntityService,
+ private idService: IdService,
) {
this.logger = this.queueLoggerService.logger.createSubLogger('export-notes');
}
@@ -103,7 +104,7 @@ export class ExportNotesProcessorService {
poll = await this.pollsRepository.findOneByOrFail({ noteId: note.id });
}
const files = await this.driveFileEntityService.packManyByIds(note.fileIds);
- const content = JSON.stringify(serialize(note, poll, files));
+ const content = JSON.stringify(this.serialize(note, poll, files));
const isFirst = exportedNotesCount === 0;
await write(isFirst ? content : ',\n' + content);
exportedNotesCount++;
@@ -129,22 +130,22 @@ export class ExportNotesProcessorService {
cleanup();
}
}
-}
-function serialize(note: MiNote, poll: MiPoll | null = null, files: Packed<'DriveFile'>[]): Record<string, unknown> {
- return {
- id: note.id,
- text: note.text,
- createdAt: note.createdAt,
- fileIds: note.fileIds,
- files: files,
- replyId: note.replyId,
- renoteId: note.renoteId,
- poll: poll,
- cw: note.cw,
- visibility: note.visibility,
- visibleUserIds: note.visibleUserIds,
- localOnly: note.localOnly,
- reactionAcceptance: note.reactionAcceptance,
- };
+ private serialize(note: MiNote, poll: MiPoll | null = null, files: Packed<'DriveFile'>[]): Record<string, unknown> {
+ return {
+ id: note.id,
+ text: note.text,
+ createdAt: this.idService.parse(note.id).date.toISOString(),
+ fileIds: note.fileIds,
+ files: files,
+ replyId: note.replyId,
+ renoteId: note.renoteId,
+ poll: poll,
+ cw: note.cw,
+ visibility: note.visibility,
+ visibleUserIds: note.visibleUserIds,
+ localOnly: note.localOnly,
+ reactionAcceptance: note.reactionAcceptance,
+ };
+ }
}
diff --git a/packages/backend/src/queue/processors/ImportAntennasProcessorService.ts b/packages/backend/src/queue/processors/ImportAntennasProcessorService.ts
index 7c95bccaff..3e93b7b505 100644
--- a/packages/backend/src/queue/processors/ImportAntennasProcessorService.ts
+++ b/packages/backend/src/queue/processors/ImportAntennasProcessorService.ts
@@ -76,8 +76,7 @@ export class ImportAntennasProcessorService {
continue;
}
const result = await this.antennasRepository.insert({
- id: this.idService.genId(),
- createdAt: now,
+ id: this.idService.gen(now.getTime()),
lastUsedAt: now,
userId: job.data.user.id,
name: antenna.name,
diff --git a/packages/backend/src/queue/processors/ImportUserListsProcessorService.ts b/packages/backend/src/queue/processors/ImportUserListsProcessorService.ts
index 9be36a9d0d..5dd3fbe887 100644
--- a/packages/backend/src/queue/processors/ImportUserListsProcessorService.ts
+++ b/packages/backend/src/queue/processors/ImportUserListsProcessorService.ts
@@ -80,8 +80,7 @@ export class ImportUserListsProcessorService {
if (list == null) {
list = await this.userListsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
userId: user.id,
name: listName,
}).then(x => this.userListsRepository.findOneByOrFail(x.identifiers[0]));
diff --git a/packages/backend/src/server/api/SigninApiService.ts b/packages/backend/src/server/api/SigninApiService.ts
index 150f3f24d4..f3115690fe 100644
--- a/packages/backend/src/server/api/SigninApiService.ts
+++ b/packages/backend/src/server/api/SigninApiService.ts
@@ -128,8 +128,7 @@ export class SigninApiService {
const fail = async (status?: number, failure?: { id: string }) => {
// Append signin history
await this.signinsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
userId: user.id,
ip: request.ip,
headers: request.headers as any,
diff --git a/packages/backend/src/server/api/SigninService.ts b/packages/backend/src/server/api/SigninService.ts
index cebba8c8ee..98e9027006 100644
--- a/packages/backend/src/server/api/SigninService.ts
+++ b/packages/backend/src/server/api/SigninService.ts
@@ -30,8 +30,7 @@ export class SigninService {
setImmediate(async () => {
// Append signin history
const record = await this.signinsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
userId: user.id,
ip: request.ip,
headers: request.headers as any,
diff --git a/packages/backend/src/server/api/SignupApiService.ts b/packages/backend/src/server/api/SignupApiService.ts
index 431df581b5..d2c4440116 100644
--- a/packages/backend/src/server/api/SignupApiService.ts
+++ b/packages/backend/src/server/api/SignupApiService.ts
@@ -164,8 +164,7 @@ export class SignupApiService {
const hash = await bcrypt.hash(password, salt);
const pendingUser = await this.userPendingsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
code,
email: emailAddress!,
username: username,
diff --git a/packages/backend/src/server/api/endpoints/admin/ad/create.ts b/packages/backend/src/server/api/endpoints/admin/ad/create.ts
index e48dffecf4..17f792639b 100644
--- a/packages/backend/src/server/api/endpoints/admin/ad/create.ts
+++ b/packages/backend/src/server/api/endpoints/admin/ad/create.ts
@@ -44,8 +44,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
) {
super(meta, paramDef, async (ps, me) => {
const ad = await this.adsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
expiresAt: new Date(ps.expiresAt),
startsAt: new Date(ps.startsAt),
dayOfWeek: ps.dayOfWeek,
diff --git a/packages/backend/src/server/api/endpoints/admin/announcements/create.ts b/packages/backend/src/server/api/endpoints/admin/announcements/create.ts
index 262b36b9a4..253a29cf5a 100644
--- a/packages/backend/src/server/api/endpoints/admin/announcements/create.ts
+++ b/packages/backend/src/server/api/endpoints/admin/announcements/create.ts
@@ -71,7 +71,6 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
) {
super(meta, paramDef, async (ps, me) => {
const { raw, packed } = await this.announcementService.create({
- createdAt: new Date(),
updatedAt: null,
title: ps.title,
text: ps.text,
diff --git a/packages/backend/src/server/api/endpoints/admin/announcements/list.ts b/packages/backend/src/server/api/endpoints/admin/announcements/list.ts
index c82e702eef..fefc379c00 100644
--- a/packages/backend/src/server/api/endpoints/admin/announcements/list.ts
+++ b/packages/backend/src/server/api/endpoints/admin/announcements/list.ts
@@ -9,6 +9,7 @@ import type { MiAnnouncement } from '@/models/Announcement.js';
import { Endpoint } from '@/server/api/endpoint-base.js';
import { QueryService } from '@/core/QueryService.js';
import { DI } from '@/di-symbols.js';
+import { IdService } from '@/core/IdService.js';
export const meta = {
tags: ['admin'],
@@ -81,6 +82,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private announcementReadsRepository: AnnouncementReadsRepository,
private queryService: QueryService,
+ private idService: IdService,
) {
super(meta, paramDef, async (ps, me) => {
const query = this.queryService.makePaginationQuery(this.announcementsRepository.createQueryBuilder('announcement'), ps.sinceId, ps.untilId);
@@ -102,7 +104,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
return announcements.map(announcement => ({
id: announcement.id,
- createdAt: announcement.createdAt.toISOString(),
+ createdAt: this.idService.parse(announcement.id).date.toISOString(),
updatedAt: announcement.updatedAt?.toISOString() ?? null,
title: announcement.title,
text: announcement.text,
diff --git a/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts b/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts
index 7fb5342f8d..4e5320007e 100644
--- a/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts
+++ b/packages/backend/src/server/api/endpoints/admin/drive/show-file.ts
@@ -8,6 +8,7 @@ import type { DriveFilesRepository, UsersRepository } from '@/models/_.js';
import { Endpoint } from '@/server/api/endpoint-base.js';
import { DI } from '@/di-symbols.js';
import { RoleService } from '@/core/RoleService.js';
+import { IdService } from '@/core/IdService.js';
import { ApiError } from '../../../error.js';
export const meta = {
@@ -163,6 +164,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private usersRepository: UsersRepository,
private roleService: RoleService,
+ private idService: IdService,
) {
super(meta, paramDef, async (ps, me) => {
const file = ps.fileId ? await this.driveFilesRepository.findOneBy({ id: ps.fileId }) : await this.driveFilesRepository.findOne({
@@ -212,7 +214,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
type: file.type,
name: file.name,
md5: file.md5,
- createdAt: file.createdAt.toISOString(),
+ createdAt: this.idService.parse(file.id).date.toISOString(),
requestIp: iAmModerator ? file.requestIp : null,
requestHeaders: iAmModerator && !ownerIsModerator ? file.requestHeaders : null,
};
diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts b/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts
index c5f986ff02..a65e4e7624 100644
--- a/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts
+++ b/packages/backend/src/server/api/endpoints/admin/emoji/copy.ts
@@ -79,7 +79,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
const copied = await this.emojisRepository.insert({
- id: this.idService.genId(),
+ id: this.idService.gen(),
updatedAt: new Date(),
name: emoji.name,
host: null,
diff --git a/packages/backend/src/server/api/endpoints/admin/get-user-ips.ts b/packages/backend/src/server/api/endpoints/admin/get-user-ips.ts
index cf94c998fa..7b807e848b 100644
--- a/packages/backend/src/server/api/endpoints/admin/get-user-ips.ts
+++ b/packages/backend/src/server/api/endpoints/admin/get-user-ips.ts
@@ -7,6 +7,7 @@ import { Inject, Injectable } from '@nestjs/common';
import type { UserIpsRepository } from '@/models/_.js';
import { Endpoint } from '@/server/api/endpoint-base.js';
import { DI } from '@/di-symbols.js';
+import { IdService } from '@/core/IdService.js';
export const meta = {
tags: ['admin'],
@@ -28,17 +29,19 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
constructor(
@Inject(DI.userIpsRepository)
private userIpsRepository: UserIpsRepository,
+
+ private idService: IdService,
) {
super(meta, paramDef, async (ps, me) => {
const ips = await this.userIpsRepository.find({
where: { userId: ps.userId },
- order: { createdAt: 'DESC' },
+ order: { id: 'DESC' },
take: 30,
});
return ips.map(x => ({
ip: x.ip,
- createdAt: x.createdAt.toISOString(),
+ createdAt: this.idService.parse(x.id).date.toISOString(),
}));
});
}
diff --git a/packages/backend/src/server/api/endpoints/admin/invite/create.ts b/packages/backend/src/server/api/endpoints/admin/invite/create.ts
index 2cc5ab6e35..4a22fd4824 100644
--- a/packages/backend/src/server/api/endpoints/admin/invite/create.ts
+++ b/packages/backend/src/server/api/endpoints/admin/invite/create.ts
@@ -72,8 +72,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
for (let i = 0; i < ps.count; i++) {
ticketsPromises.push(this.registrationTicketsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
expiresAt: ps.expiresAt ? new Date(ps.expiresAt) : null,
code: generateInviteCode(),
}).then(x => this.registrationTicketsRepository.findOneByOrFail(x.identifiers[0])));
diff --git a/packages/backend/src/server/api/endpoints/admin/roles/users.ts b/packages/backend/src/server/api/endpoints/admin/roles/users.ts
index ef5627bc9a..b7f9aa0495 100644
--- a/packages/backend/src/server/api/endpoints/admin/roles/users.ts
+++ b/packages/backend/src/server/api/endpoints/admin/roles/users.ts
@@ -10,6 +10,7 @@ import { Endpoint } from '@/server/api/endpoint-base.js';
import { QueryService } from '@/core/QueryService.js';
import { DI } from '@/di-symbols.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
+import { IdService } from '@/core/IdService.js';
import { ApiError } from '../../../error.js';
export const meta = {
@@ -49,6 +50,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private queryService: QueryService,
private userEntityService: UserEntityService,
+ private idService: IdService,
) {
super(meta, paramDef, async (ps, me) => {
const role = await this.rolesRepository.findOneBy({
@@ -74,7 +76,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
return await Promise.all(assigns.map(async assign => ({
id: assign.id,
- createdAt: assign.createdAt,
+ createdAt: this.idService.parse(assign.id).date.toISOString(),
user: await this.userEntityService.pack(assign.user!, me, { detail: true }),
expiresAt: assign.expiresAt,
})));
diff --git a/packages/backend/src/server/api/endpoints/admin/show-user.ts b/packages/backend/src/server/api/endpoints/admin/show-user.ts
index 0731413d05..f550c4fd28 100644
--- a/packages/backend/src/server/api/endpoints/admin/show-user.ts
+++ b/packages/backend/src/server/api/endpoints/admin/show-user.ts
@@ -9,6 +9,7 @@ import { Endpoint } from '@/server/api/endpoint-base.js';
import { DI } from '@/di-symbols.js';
import { RoleService } from '@/core/RoleService.js';
import { RoleEntityService } from '@/core/entities/RoleEntityService.js';
+import { IdService } from '@/core/IdService.js';
export const meta = {
tags: ['admin'],
@@ -44,6 +45,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private roleService: RoleService,
private roleEntityService: RoleEntityService,
+ private idService: IdService,
) {
super(meta, paramDef, async (ps, me) => {
const [user, profile] = await Promise.all([
@@ -92,7 +94,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
policies: await this.roleService.getUserPolicies(user.id),
roles: await this.roleEntityService.packMany(roles, me),
roleAssigns: roleAssigns.map(a => ({
- createdAt: a.createdAt.toISOString(),
+ createdAt: this.idService.parse(a.id).date.toISOString(),
expiresAt: a.expiresAt ? a.expiresAt.toISOString() : null,
roleId: a.roleId,
})),
diff --git a/packages/backend/src/server/api/endpoints/antennas/create.ts b/packages/backend/src/server/api/endpoints/antennas/create.ts
index 15fca4904d..687893398e 100644
--- a/packages/backend/src/server/api/endpoints/antennas/create.ts
+++ b/packages/backend/src/server/api/endpoints/antennas/create.ts
@@ -112,8 +112,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
const now = new Date();
const antenna = await this.antennasRepository.insert({
- id: this.idService.genId(),
- createdAt: now,
+ id: this.idService.gen(now.getTime()),
lastUsedAt: now,
userId: me.id,
name: ps.name,
diff --git a/packages/backend/src/server/api/endpoints/antennas/notes.ts b/packages/backend/src/server/api/endpoints/antennas/notes.ts
index 6d69971e30..ff96411f3b 100644
--- a/packages/backend/src/server/api/endpoints/antennas/notes.ts
+++ b/packages/backend/src/server/api/endpoints/antennas/notes.ts
@@ -73,8 +73,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private redisTimelineService: RedisTimelineService,
) {
super(meta, paramDef, async (ps, me) => {
- const untilId = ps.untilId ?? (ps.untilDate ? this.idService.genId(new Date(ps.untilDate!)) : null);
- const sinceId = ps.sinceId ?? (ps.sinceDate ? this.idService.genId(new Date(ps.sinceDate!)) : null);
+ const untilId = ps.untilId ?? (ps.untilDate ? this.idService.gen(ps.untilDate!) : null);
+ const sinceId = ps.sinceId ?? (ps.sinceDate ? this.idService.gen(ps.sinceDate!) : null);
const antenna = await this.antennasRepository.findOneBy({
id: ps.antennaId,
diff --git a/packages/backend/src/server/api/endpoints/app/create.ts b/packages/backend/src/server/api/endpoints/app/create.ts
index cb00221506..f89d9823ba 100644
--- a/packages/backend/src/server/api/endpoints/app/create.ts
+++ b/packages/backend/src/server/api/endpoints/app/create.ts
@@ -55,8 +55,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
// Create account
const app = await this.appsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
userId: me ? me.id : null,
name: ps.name,
description: ps.description,
diff --git a/packages/backend/src/server/api/endpoints/auth/accept.ts b/packages/backend/src/server/api/endpoints/auth/accept.ts
index 1b1893fd94..e0baeb3565 100644
--- a/packages/backend/src/server/api/endpoints/auth/accept.ts
+++ b/packages/backend/src/server/api/endpoints/auth/accept.ts
@@ -80,8 +80,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
const now = new Date();
await this.accessTokensRepository.insert({
- id: this.idService.genId(),
- createdAt: now,
+ id: this.idService.gen(now.getTime()),
lastUsedAt: now,
appId: session.appId,
userId: me.id,
diff --git a/packages/backend/src/server/api/endpoints/auth/session/generate.ts b/packages/backend/src/server/api/endpoints/auth/session/generate.ts
index 8b6a2c213d..6e474c59e0 100644
--- a/packages/backend/src/server/api/endpoints/auth/session/generate.ts
+++ b/packages/backend/src/server/api/endpoints/auth/session/generate.ts
@@ -79,8 +79,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
// Create session token document
const doc = await this.authSessionsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
appId: app.id,
token: token,
}).then(x => this.authSessionsRepository.findOneByOrFail(x.identifiers[0]));
diff --git a/packages/backend/src/server/api/endpoints/channels/create.ts b/packages/backend/src/server/api/endpoints/channels/create.ts
index e72120e156..3ba411d28c 100644
--- a/packages/backend/src/server/api/endpoints/channels/create.ts
+++ b/packages/backend/src/server/api/endpoints/channels/create.ts
@@ -80,8 +80,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
const channel = await this.channelsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
userId: me.id,
name: ps.name,
description: ps.description ?? null,
diff --git a/packages/backend/src/server/api/endpoints/channels/favorite.ts b/packages/backend/src/server/api/endpoints/channels/favorite.ts
index 1f78a86dd4..c175718919 100644
--- a/packages/backend/src/server/api/endpoints/channels/favorite.ts
+++ b/packages/backend/src/server/api/endpoints/channels/favorite.ts
@@ -57,8 +57,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
await this.channelFavoritesRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
userId: me.id,
channelId: channel.id,
});
diff --git a/packages/backend/src/server/api/endpoints/channels/follow.ts b/packages/backend/src/server/api/endpoints/channels/follow.ts
index 5a43e8be1b..76ec6be805 100644
--- a/packages/backend/src/server/api/endpoints/channels/follow.ts
+++ b/packages/backend/src/server/api/endpoints/channels/follow.ts
@@ -57,8 +57,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
await this.channelFollowingsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
followerId: me.id,
followeeId: channel.id,
});
diff --git a/packages/backend/src/server/api/endpoints/channels/timeline.ts b/packages/backend/src/server/api/endpoints/channels/timeline.ts
index 2dfcf659d7..9c39d0ed86 100644
--- a/packages/backend/src/server/api/endpoints/channels/timeline.ts
+++ b/packages/backend/src/server/api/endpoints/channels/timeline.ts
@@ -74,8 +74,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private activeUsersChart: ActiveUsersChart,
) {
super(meta, paramDef, async (ps, me) => {
- const untilId = ps.untilId ?? (ps.untilDate ? this.idService.genId(new Date(ps.untilDate!)) : null);
- const sinceId = ps.sinceId ?? (ps.sinceDate ? this.idService.genId(new Date(ps.sinceDate!)) : null);
+ const untilId = ps.untilId ?? (ps.untilDate ? this.idService.gen(ps.untilDate!) : null);
+ const sinceId = ps.sinceId ?? (ps.sinceDate ? this.idService.gen(ps.sinceDate!) : null);
const isRangeSpecified = untilId != null && sinceId != null;
const channel = await this.channelsRepository.findOneBy({
diff --git a/packages/backend/src/server/api/endpoints/clips/favorite.ts b/packages/backend/src/server/api/endpoints/clips/favorite.ts
index 6cd34f0a54..015b2cfa85 100644
--- a/packages/backend/src/server/api/endpoints/clips/favorite.ts
+++ b/packages/backend/src/server/api/endpoints/clips/favorite.ts
@@ -74,8 +74,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
await this.clipFavoritesRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
clipId: clip.id,
userId: me.id,
});
diff --git a/packages/backend/src/server/api/endpoints/drive/folders/create.ts b/packages/backend/src/server/api/endpoints/drive/folders/create.ts
index bc3a9bbe21..d18199f19b 100644
--- a/packages/backend/src/server/api/endpoints/drive/folders/create.ts
+++ b/packages/backend/src/server/api/endpoints/drive/folders/create.ts
@@ -76,8 +76,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
// Create folder
const folder = await this.driveFoldersRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
name: ps.name,
parentId: parent !== null ? parent.id : null,
userId: me.id,
diff --git a/packages/backend/src/server/api/endpoints/flash/create.ts b/packages/backend/src/server/api/endpoints/flash/create.ts
index b46660d218..4fa65ac9aa 100644
--- a/packages/backend/src/server/api/endpoints/flash/create.ts
+++ b/packages/backend/src/server/api/endpoints/flash/create.ts
@@ -53,9 +53,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
) {
super(meta, paramDef, async (ps, me) => {
const flash = await this.flashsRepository.insert({
- id: this.idService.genId(),
+ id: this.idService.gen(),
userId: me.id,
- createdAt: new Date(),
updatedAt: new Date(),
title: ps.title,
summary: ps.summary,
diff --git a/packages/backend/src/server/api/endpoints/flash/like.ts b/packages/backend/src/server/api/endpoints/flash/like.ts
index a90e5f653a..1003249c0c 100644
--- a/packages/backend/src/server/api/endpoints/flash/like.ts
+++ b/packages/backend/src/server/api/endpoints/flash/like.ts
@@ -83,8 +83,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
// Create like
await this.flashLikesRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
flashId: flash.id,
userId: me.id,
});
diff --git a/packages/backend/src/server/api/endpoints/gallery/posts/create.ts b/packages/backend/src/server/api/endpoints/gallery/posts/create.ts
index 94701712de..71e0ad4141 100644
--- a/packages/backend/src/server/api/endpoints/gallery/posts/create.ts
+++ b/packages/backend/src/server/api/endpoints/gallery/posts/create.ts
@@ -76,8 +76,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
const post = await this.galleryPostsRepository.insert(new MiGalleryPost({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
updatedAt: new Date(),
title: ps.title,
description: ps.description,
diff --git a/packages/backend/src/server/api/endpoints/gallery/posts/like.ts b/packages/backend/src/server/api/endpoints/gallery/posts/like.ts
index c557054066..561b2492ab 100644
--- a/packages/backend/src/server/api/endpoints/gallery/posts/like.ts
+++ b/packages/backend/src/server/api/endpoints/gallery/posts/like.ts
@@ -83,8 +83,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
// Create like
await this.galleryLikesRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
postId: post.id,
userId: me.id,
});
diff --git a/packages/backend/src/server/api/endpoints/i/apps.ts b/packages/backend/src/server/api/endpoints/i/apps.ts
index daa3e536a4..09f6540a77 100644
--- a/packages/backend/src/server/api/endpoints/i/apps.ts
+++ b/packages/backend/src/server/api/endpoints/i/apps.ts
@@ -7,6 +7,7 @@ import { Inject, Injectable } from '@nestjs/common';
import { Endpoint } from '@/server/api/endpoint-base.js';
import type { AccessTokensRepository } from '@/models/_.js';
import { DI } from '@/di-symbols.js';
+import { IdService } from '@/core/IdService.js';
export const meta = {
requireCredential: true,
@@ -27,6 +28,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
constructor(
@Inject(DI.accessTokensRepository)
private accessTokensRepository: AccessTokensRepository,
+
+ private idService: IdService,
) {
super(meta, paramDef, async (ps, me) => {
const query = this.accessTokensRepository.createQueryBuilder('token')
@@ -34,8 +37,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
.leftJoinAndSelect('token.app', 'app');
switch (ps.sort) {
- case '+createdAt': query.orderBy('token.createdAt', 'DESC'); break;
- case '-createdAt': query.orderBy('token.createdAt', 'ASC'); break;
+ case '+createdAt': query.orderBy('token.id', 'DESC'); break;
+ case '-createdAt': query.orderBy('token.id', 'ASC'); break;
case '+lastUsedAt': query.orderBy('token.lastUsedAt', 'DESC'); break;
case '-lastUsedAt': query.orderBy('token.lastUsedAt', 'ASC'); break;
default: query.orderBy('token.id', 'ASC'); break;
@@ -46,7 +49,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
return await Promise.all(tokens.map(token => ({
id: token.id,
name: token.name ?? token.app?.name,
- createdAt: token.createdAt,
+ createdAt: this.idService.parse(token.id).date.toISOString(),
lastUsedAt: token.lastUsedAt,
permission: token.permission,
})));
diff --git a/packages/backend/src/server/api/endpoints/i/registry/set.ts b/packages/backend/src/server/api/endpoints/i/registry/set.ts
index c074b152df..6203e7aa8b 100644
--- a/packages/backend/src/server/api/endpoints/i/registry/set.ts
+++ b/packages/backend/src/server/api/endpoints/i/registry/set.ts
@@ -53,8 +53,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
});
} else {
await this.registryItemsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
updatedAt: new Date(),
userId: me.id,
domain: null,
diff --git a/packages/backend/src/server/api/endpoints/i/webhooks/create.ts b/packages/backend/src/server/api/endpoints/i/webhooks/create.ts
index 48eaeff406..f00dba4a85 100644
--- a/packages/backend/src/server/api/endpoints/i/webhooks/create.ts
+++ b/packages/backend/src/server/api/endpoints/i/webhooks/create.ts
@@ -63,8 +63,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
const webhook = await this.webhooksRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
userId: me.id,
name: ps.name,
url: ps.url,
diff --git a/packages/backend/src/server/api/endpoints/invite/create.ts b/packages/backend/src/server/api/endpoints/invite/create.ts
index 7361ab616c..94836283fa 100644
--- a/packages/backend/src/server/api/endpoints/invite/create.ts
+++ b/packages/backend/src/server/api/endpoints/invite/create.ts
@@ -62,7 +62,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
if (policies.inviteLimit) {
const count = await this.registrationTicketsRepository.countBy({
- createdAt: MoreThan(new Date(Date.now() - (policies.inviteLimitCycle * 1000 * 60))),
+ id: MoreThan(this.idService.gen(Date.now() - (policies.inviteLimitCycle * 1000 * 60))),
createdById: me.id,
});
@@ -72,8 +72,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
const ticket = await this.registrationTicketsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
createdBy: me,
createdById: me.id,
expiresAt: policies.inviteExpirationTime ? new Date(Date.now() + (policies.inviteExpirationTime * 1000 * 60)) : null,
diff --git a/packages/backend/src/server/api/endpoints/invite/limit.ts b/packages/backend/src/server/api/endpoints/invite/limit.ts
index 43b94e4f06..1f4190c948 100644
--- a/packages/backend/src/server/api/endpoints/invite/limit.ts
+++ b/packages/backend/src/server/api/endpoints/invite/limit.ts
@@ -9,6 +9,7 @@ import { Endpoint } from '@/server/api/endpoint-base.js';
import type { RegistrationTicketsRepository } from '@/models/_.js';
import { RoleService } from '@/core/RoleService.js';
import { DI } from '@/di-symbols.js';
+import { IdService } from '@/core/IdService.js';
export const meta = {
tags: ['meta'],
@@ -41,12 +42,13 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private registrationTicketsRepository: RegistrationTicketsRepository,
private roleService: RoleService,
+ private idService: IdService,
) {
super(meta, paramDef, async (ps, me) => {
const policies = await this.roleService.getUserPolicies(me.id);
const count = policies.inviteLimit ? await this.registrationTicketsRepository.countBy({
- createdAt: MoreThan(new Date(Date.now() - (policies.inviteExpirationTime * 60 * 1000))),
+ id: MoreThan(this.idService.gen(Date.now() - (policies.inviteExpirationTime * 60 * 1000))),
createdById: me.id,
}) : null;
diff --git a/packages/backend/src/server/api/endpoints/miauth/gen-token.ts b/packages/backend/src/server/api/endpoints/miauth/gen-token.ts
index e40656cb6d..cac8f41f8e 100644
--- a/packages/backend/src/server/api/endpoints/miauth/gen-token.ts
+++ b/packages/backend/src/server/api/endpoints/miauth/gen-token.ts
@@ -59,8 +59,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
// Insert access token doc
await this.accessTokensRepository.insert({
- id: this.idService.genId(),
- createdAt: now,
+ id: this.idService.gen(now.getTime()),
lastUsedAt: now,
session: ps.session,
userId: me.id,
diff --git a/packages/backend/src/server/api/endpoints/notes/favorites/create.ts b/packages/backend/src/server/api/endpoints/notes/favorites/create.ts
index cc648e22a8..ed3dce7f35 100644
--- a/packages/backend/src/server/api/endpoints/notes/favorites/create.ts
+++ b/packages/backend/src/server/api/endpoints/notes/favorites/create.ts
@@ -80,8 +80,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
// Create favorite
await this.noteFavoritesRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
noteId: note.id,
userId: me.id,
});
diff --git a/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts b/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts
index 8ac5f1b038..378529e30d 100644
--- a/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts
+++ b/packages/backend/src/server/api/endpoints/notes/hybrid-timeline.ts
@@ -77,8 +77,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private redisTimelineService: RedisTimelineService,
) {
super(meta, paramDef, async (ps, me) => {
- const untilId = ps.untilId ?? (ps.untilDate ? this.idService.genId(new Date(ps.untilDate!)) : null);
- const sinceId = ps.sinceId ?? (ps.sinceDate ? this.idService.genId(new Date(ps.sinceDate!)) : null);
+ const untilId = ps.untilId ?? (ps.untilDate ? this.idService.gen(ps.untilDate!) : null);
+ const sinceId = ps.sinceId ?? (ps.sinceDate ? this.idService.gen(ps.sinceDate!) : null);
const policies = await this.roleService.getUserPolicies(me.id);
if (!policies.ltlAvailable) {
diff --git a/packages/backend/src/server/api/endpoints/notes/local-timeline.ts b/packages/backend/src/server/api/endpoints/notes/local-timeline.ts
index d10c3bedbf..f69e60ab54 100644
--- a/packages/backend/src/server/api/endpoints/notes/local-timeline.ts
+++ b/packages/backend/src/server/api/endpoints/notes/local-timeline.ts
@@ -73,8 +73,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private redisTimelineService: RedisTimelineService,
) {
super(meta, paramDef, async (ps, me) => {
- const untilId = ps.untilId ?? (ps.untilDate ? this.idService.genId(new Date(ps.untilDate!)) : null);
- const sinceId = ps.sinceId ?? (ps.sinceDate ? this.idService.genId(new Date(ps.sinceDate!)) : null);
+ const untilId = ps.untilId ?? (ps.untilDate ? this.idService.gen(ps.untilDate!) : null);
+ const sinceId = ps.sinceId ?? (ps.sinceDate ? this.idService.gen(ps.sinceDate!) : null);
const policies = await this.roleService.getUserPolicies(me ? me.id : null);
if (!policies.ltlAvailable) {
diff --git a/packages/backend/src/server/api/endpoints/notes/polls/recommendation.ts b/packages/backend/src/server/api/endpoints/notes/polls/recommendation.ts
index 986201e950..af7ff8bdcd 100644
--- a/packages/backend/src/server/api/endpoints/notes/polls/recommendation.ts
+++ b/packages/backend/src/server/api/endpoints/notes/polls/recommendation.ts
@@ -98,7 +98,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
id: In(polls.map(poll => poll.noteId)),
},
order: {
- createdAt: 'DESC',
+ id: 'DESC',
},
});
diff --git a/packages/backend/src/server/api/endpoints/notes/polls/vote.ts b/packages/backend/src/server/api/endpoints/notes/polls/vote.ts
index a58bf09b85..734c3f0e63 100644
--- a/packages/backend/src/server/api/endpoints/notes/polls/vote.ts
+++ b/packages/backend/src/server/api/endpoints/notes/polls/vote.ts
@@ -145,8 +145,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
// Create vote
const vote = await this.pollVotesRepository.insert({
- id: this.idService.genId(),
- createdAt,
+ id: this.idService.gen(createdAt.getTime()),
noteId: note.id,
userId: me.id,
choice: ps.choice,
diff --git a/packages/backend/src/server/api/endpoints/notes/thread-muting/create.ts b/packages/backend/src/server/api/endpoints/notes/thread-muting/create.ts
index 449a838604..b2cdaa00ac 100644
--- a/packages/backend/src/server/api/endpoints/notes/thread-muting/create.ts
+++ b/packages/backend/src/server/api/endpoints/notes/thread-muting/create.ts
@@ -72,8 +72,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
await this.noteReadService.read(me.id, mutedNotes);
await this.noteThreadMutingsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
threadId: note.threadId ?? note.id,
userId: me.id,
});
diff --git a/packages/backend/src/server/api/endpoints/notes/timeline.ts b/packages/backend/src/server/api/endpoints/notes/timeline.ts
index 760d52c9db..8f13b3a4ba 100644
--- a/packages/backend/src/server/api/endpoints/notes/timeline.ts
+++ b/packages/backend/src/server/api/endpoints/notes/timeline.ts
@@ -66,8 +66,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private redisTimelineService: RedisTimelineService,
) {
super(meta, paramDef, async (ps, me) => {
- const untilId = ps.untilId ?? (ps.untilDate ? this.idService.genId(new Date(ps.untilDate!)) : null);
- const sinceId = ps.sinceId ?? (ps.sinceDate ? this.idService.genId(new Date(ps.sinceDate!)) : null);
+ const untilId = ps.untilId ?? (ps.untilDate ? this.idService.gen(ps.untilDate!) : null);
+ const sinceId = ps.sinceId ?? (ps.sinceDate ? this.idService.gen(ps.sinceDate!) : null);
const [
followings,
diff --git a/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts b/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts
index f7ee58264e..b8007e78fd 100644
--- a/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts
+++ b/packages/backend/src/server/api/endpoints/notes/user-list-timeline.ts
@@ -83,8 +83,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private redisTimelineService: RedisTimelineService,
) {
super(meta, paramDef, async (ps, me) => {
- const untilId = ps.untilId ?? (ps.untilDate ? this.idService.genId(new Date(ps.untilDate!)) : null);
- const sinceId = ps.sinceId ?? (ps.sinceDate ? this.idService.genId(new Date(ps.sinceDate!)) : null);
+ const untilId = ps.untilId ?? (ps.untilDate ? this.idService.gen(ps.untilDate!) : null);
+ const sinceId = ps.sinceId ?? (ps.sinceDate ? this.idService.gen(ps.sinceDate!) : null);
const list = await this.userListsRepository.findOneBy({
id: ps.listId,
diff --git a/packages/backend/src/server/api/endpoints/pages/create.ts b/packages/backend/src/server/api/endpoints/pages/create.ts
index c0e8fab16c..4c2ef516e5 100644
--- a/packages/backend/src/server/api/endpoints/pages/create.ts
+++ b/packages/backend/src/server/api/endpoints/pages/create.ts
@@ -103,8 +103,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
});
const page = await this.pagesRepository.insert(new MiPage({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
updatedAt: new Date(),
title: ps.title,
name: ps.name,
diff --git a/packages/backend/src/server/api/endpoints/pages/like.ts b/packages/backend/src/server/api/endpoints/pages/like.ts
index 6c69cad9d5..8c18982b50 100644
--- a/packages/backend/src/server/api/endpoints/pages/like.ts
+++ b/packages/backend/src/server/api/endpoints/pages/like.ts
@@ -83,8 +83,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
// Create like
await this.pageLikesRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
pageId: page.id,
userId: me.id,
});
diff --git a/packages/backend/src/server/api/endpoints/promo/read.ts b/packages/backend/src/server/api/endpoints/promo/read.ts
index b197756acc..7d07c92178 100644
--- a/packages/backend/src/server/api/endpoints/promo/read.ts
+++ b/packages/backend/src/server/api/endpoints/promo/read.ts
@@ -60,8 +60,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
await this.promoReadsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
noteId: note.id,
userId: me.id,
});
diff --git a/packages/backend/src/server/api/endpoints/renote-mute/create.ts b/packages/backend/src/server/api/endpoints/renote-mute/create.ts
index 3c9d266e21..7ff7b5de3a 100644
--- a/packages/backend/src/server/api/endpoints/renote-mute/create.ts
+++ b/packages/backend/src/server/api/endpoints/renote-mute/create.ts
@@ -90,8 +90,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
// Create mute
await this.renoteMutingsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
muterId: muter.id,
muteeId: mutee.id,
} as MiRenoteMuting);
diff --git a/packages/backend/src/server/api/endpoints/request-reset-password.ts b/packages/backend/src/server/api/endpoints/request-reset-password.ts
index adb160c58b..f13710e1dd 100644
--- a/packages/backend/src/server/api/endpoints/request-reset-password.ts
+++ b/packages/backend/src/server/api/endpoints/request-reset-password.ts
@@ -84,8 +84,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
const token = secureRndstr(64, { chars: L_CHARS });
await this.passwordResetRequestsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
userId: profile.userId,
token,
});
diff --git a/packages/backend/src/server/api/endpoints/reset-password.ts b/packages/backend/src/server/api/endpoints/reset-password.ts
index 1858c922a0..3a6dc14bcd 100644
--- a/packages/backend/src/server/api/endpoints/reset-password.ts
+++ b/packages/backend/src/server/api/endpoints/reset-password.ts
@@ -8,6 +8,7 @@ import { Inject, Injectable } from '@nestjs/common';
import type { UserProfilesRepository, PasswordResetRequestsRepository } from '@/models/_.js';
import { Endpoint } from '@/server/api/endpoint-base.js';
import { DI } from '@/di-symbols.js';
+import { IdService } from '@/core/IdService.js';
export const meta = {
tags: ['reset password'],
@@ -38,6 +39,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
@Inject(DI.userProfilesRepository)
private userProfilesRepository: UserProfilesRepository,
+
+ private idService: IdService,
) {
super(meta, paramDef, async (ps, me) => {
const req = await this.passwordResetRequestsRepository.findOneByOrFail({
@@ -45,7 +48,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
});
// 発行してから30分以上経過していたら無効
- if (Date.now() - req.createdAt.getTime() > 1000 * 60 * 30) {
+ if (Date.now() - this.idService.parse(req.id).date.getTime() > 1000 * 60 * 30) {
throw new Error(); // TODO
}
diff --git a/packages/backend/src/server/api/endpoints/roles/notes.ts b/packages/backend/src/server/api/endpoints/roles/notes.ts
index 0db51abc55..e6e1daaa51 100644
--- a/packages/backend/src/server/api/endpoints/roles/notes.ts
+++ b/packages/backend/src/server/api/endpoints/roles/notes.ts
@@ -69,8 +69,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private redisTimelineService: RedisTimelineService,
) {
super(meta, paramDef, async (ps, me) => {
- const untilId = ps.untilId ?? (ps.untilDate ? this.idService.genId(new Date(ps.untilDate!)) : null);
- const sinceId = ps.sinceId ?? (ps.sinceDate ? this.idService.genId(new Date(ps.sinceDate!)) : null);
+ const untilId = ps.untilId ?? (ps.untilDate ? this.idService.gen(ps.untilDate!) : null);
+ const sinceId = ps.sinceId ?? (ps.sinceDate ? this.idService.gen(ps.sinceDate!) : null);
const role = await this.rolesRepository.findOneBy({
id: ps.roleId,
diff --git a/packages/backend/src/server/api/endpoints/sw/register.ts b/packages/backend/src/server/api/endpoints/sw/register.ts
index 5cfbeab73f..9ab062326d 100644
--- a/packages/backend/src/server/api/endpoints/sw/register.ts
+++ b/packages/backend/src/server/api/endpoints/sw/register.ts
@@ -88,8 +88,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
await this.swSubscriptionsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
userId: me.id,
endpoint: ps.endpoint,
auth: ps.auth,
diff --git a/packages/backend/src/server/api/endpoints/users/lists/create-from-public.ts b/packages/backend/src/server/api/endpoints/users/lists/create-from-public.ts
index f2f6c4303a..4eb37c3e43 100644
--- a/packages/backend/src/server/api/endpoints/users/lists/create-from-public.ts
+++ b/packages/backend/src/server/api/endpoints/users/lists/create-from-public.ts
@@ -104,8 +104,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
const userList = await this.userListsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
userId: me.id,
name: ps.name,
} as MiUserList).then(x => this.userListsRepository.findOneByOrFail(x.identifiers[0]));
diff --git a/packages/backend/src/server/api/endpoints/users/lists/create.ts b/packages/backend/src/server/api/endpoints/users/lists/create.ts
index 60b2b3f17e..e86e4c0ded 100644
--- a/packages/backend/src/server/api/endpoints/users/lists/create.ts
+++ b/packages/backend/src/server/api/endpoints/users/lists/create.ts
@@ -66,8 +66,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
const userList = await this.userListsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
userId: me.id,
name: ps.name,
} as MiUserList).then(x => this.userListsRepository.findOneByOrFail(x.identifiers[0]));
diff --git a/packages/backend/src/server/api/endpoints/users/lists/favorite.ts b/packages/backend/src/server/api/endpoints/users/lists/favorite.ts
index 1707afee60..2ecf0a1256 100644
--- a/packages/backend/src/server/api/endpoints/users/lists/favorite.ts
+++ b/packages/backend/src/server/api/endpoints/users/lists/favorite.ts
@@ -69,8 +69,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
}
await this.userListFavoritesRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
userId: me.id,
userListId: ps.listId,
});
diff --git a/packages/backend/src/server/api/endpoints/users/notes.ts b/packages/backend/src/server/api/endpoints/users/notes.ts
index df0951ce74..4f3d61ce07 100644
--- a/packages/backend/src/server/api/endpoints/users/notes.ts
+++ b/packages/backend/src/server/api/endpoints/users/notes.ts
@@ -74,8 +74,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
private redisTimelineService: RedisTimelineService,
) {
super(meta, paramDef, async (ps, me) => {
- const untilId = ps.untilId ?? (ps.untilDate ? this.idService.genId(new Date(ps.untilDate!)) : null);
- const sinceId = ps.sinceId ?? (ps.sinceDate ? this.idService.genId(new Date(ps.sinceDate!)) : null);
+ const untilId = ps.untilId ?? (ps.untilDate ? this.idService.gen(ps.untilDate!) : null);
+ const sinceId = ps.sinceId ?? (ps.sinceDate ? this.idService.gen(ps.sinceDate!) : null);
const isRangeSpecified = untilId != null && sinceId != null;
const isSelf = me && (me.id === ps.userId);
diff --git a/packages/backend/src/server/api/endpoints/users/report-abuse.ts b/packages/backend/src/server/api/endpoints/users/report-abuse.ts
index 50aa6fa09e..3bcf44cc42 100644
--- a/packages/backend/src/server/api/endpoints/users/report-abuse.ts
+++ b/packages/backend/src/server/api/endpoints/users/report-abuse.ts
@@ -82,8 +82,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
}
const report = await this.abuseUserReportsRepository.insert({
- id: this.idService.genId(),
- createdAt: new Date(),
+ id: this.idService.gen(),
targetUserId: user.id,
targetUserHost: user.host,
reporterId: me.id,
diff --git a/packages/backend/src/server/api/endpoints/users/update-memo.ts b/packages/backend/src/server/api/endpoints/users/update-memo.ts
index 194d488052..b3f67815ef 100644
--- a/packages/backend/src/server/api/endpoints/users/update-memo.ts
+++ b/packages/backend/src/server/api/endpoints/users/update-memo.ts
@@ -72,7 +72,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
if (!previousMemo) {
await this.userMemosRepository.insert({
- id: this.idService.genId(),
+ id: this.idService.gen(),
userId: me.id,
targetUserId: target.id,
memo: ps.memo,
diff --git a/packages/backend/src/server/oauth/OAuth2ProviderService.ts b/packages/backend/src/server/oauth/OAuth2ProviderService.ts
index c3a78561c2..4fa7b800e8 100644
--- a/packages/backend/src/server/oauth/OAuth2ProviderService.ts
+++ b/packages/backend/src/server/oauth/OAuth2ProviderService.ts
@@ -325,8 +325,7 @@ export class OAuth2ProviderService {
// NOTE: we don't have a setup for automatic token expiration
await accessTokensRepository.insert({
- id: idService.genId(),
- createdAt: now,
+ id: idService.gen(now.getTime()),
lastUsedAt: now,
userId: granted.userId,
token: accessToken,
diff --git a/packages/backend/src/server/web/FeedService.ts b/packages/backend/src/server/web/FeedService.ts
index 78551e800b..b547630298 100644
--- a/packages/backend/src/server/web/FeedService.ts
+++ b/packages/backend/src/server/web/FeedService.ts
@@ -13,6 +13,7 @@ import type { MiUser } from '@/models/User.js';
import { UserEntityService } from '@/core/entities/UserEntityService.js';
import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.js';
import { bindThis } from '@/decorators.js';
+import { IdService } from '@/core/IdService.js';
@Injectable()
export class FeedService {
@@ -31,6 +32,7 @@ export class FeedService {
private userEntityService: UserEntityService,
private driveFileEntityService: DriveFileEntityService,
+ private idService: IdService,
) {
}
@@ -49,14 +51,14 @@ export class FeedService {
renoteId: IsNull(),
visibility: In(['public', 'home']),
},
- order: { createdAt: -1 },
+ order: { id: -1 },
take: 20,
});
const feed = new Feed({
id: author.link,
title: `${author.name} (@${user.username}@${this.config.host})`,
- updated: notes[0].createdAt,
+ updated: this.idService.parse(notes[0].id).date,
generator: 'Misskey',
description: `${user.notesCount} Notes, ${profile.ffVisibility === 'public' ? user.followingCount : '?'} Following, ${profile.ffVisibility === 'public' ? user.followersCount : '?'} Followers${profile.description ? ` · ${profile.description}` : ''}`,
link: author.link,
@@ -78,7 +80,7 @@ export class FeedService {
feed.addItem({
title: `New note by ${author.name}`,
link: `${this.config.url}/notes/${note.id}`,
- date: note.createdAt,
+ date: this.idService.parse(note.id).date,
description: note.cw ?? undefined,
content: note.text ?? undefined,
image: file ? this.driveFileEntityService.getPublicUrl(file) ?? undefined : undefined,
diff --git a/packages/backend/test/e2e/streaming.ts b/packages/backend/test/e2e/streaming.ts
index 77de144882..5a83bbb7da 100644
--- a/packages/backend/test/e2e/streaming.ts
+++ b/packages/backend/test/e2e/streaming.ts
@@ -18,7 +18,6 @@ describe('Streaming', () => {
const follow = async (follower: any, followee: any) => {
await Followings.save({
id: 'a',
- createdAt: new Date(),
followerId: follower.id,
followeeId: followee.id,
followerHost: follower.host,
diff --git a/packages/backend/test/unit/AnnouncementService.ts b/packages/backend/test/unit/AnnouncementService.ts
index 8f61d91ba9..5fe41d1962 100644
--- a/packages/backend/test/unit/AnnouncementService.ts
+++ b/packages/backend/test/unit/AnnouncementService.ts
@@ -36,7 +36,6 @@ describe('AnnouncementService', () => {
const un = secureRndstr(16);
return usersRepository.insert({
id: genAidx(new Date()),
- createdAt: new Date(),
username: un,
usernameLower: un,
...data,
@@ -44,10 +43,9 @@ describe('AnnouncementService', () => {
.then(x => usersRepository.findOneByOrFail(x.identifiers[0]));
}
- function createAnnouncement(data: Partial<MiAnnouncement> = {}) {
+ function createAnnouncement(data: Partial<MiAnnouncement & { createdAt: Date }> = {}) {
return announcementsRepository.insert({
- id: genAidx(new Date()),
- createdAt: new Date(),
+ id: genAidx(data.createdAt ?? new Date()),
updatedAt: null,
title: 'Title',
text: 'Text',
diff --git a/packages/backend/test/unit/RoleService.ts b/packages/backend/test/unit/RoleService.ts
index c6a14702ae..41a2e49ed0 100644
--- a/packages/backend/test/unit/RoleService.ts
+++ b/packages/backend/test/unit/RoleService.ts
@@ -38,7 +38,6 @@ describe('RoleService', () => {
const un = secureRndstr(16);
return usersRepository.insert({
id: genAidx(new Date()),
- createdAt: new Date(),
username: un,
usernameLower: un,
...data,
@@ -49,7 +48,6 @@ describe('RoleService', () => {
function createRole(data: Partial<MiRole> = {}) {
return rolesRepository.insert({
id: genAidx(new Date()),
- createdAt: new Date(),
updatedAt: new Date(),
lastUsedAt: new Date(),
description: '',