diff --git a/packages/backend/src/queue/processors/db/import-muting.ts b/packages/backend/src/queue/processors/db/import-muting.ts index af65837e29..f96aa7d618 100644 --- a/packages/backend/src/queue/processors/db/import-muting.ts +++ b/packages/backend/src/queue/processors/db/import-muting.ts @@ -6,7 +6,7 @@ import { downloadTextFile } from "@/misc/download-text-file.js"; import { Users, DriveFiles, Mutings } from "@/models/index.js"; import type { DbUserImportJobData } from "@/queue/types.js"; import type { User } from "@/models/entities/user.js"; -import { genId, isSelfHost, stringToAcct, toPuny } from "backend-rs"; +import { genIdAt, isSelfHost, stringToAcct, toPuny } from "backend-rs"; import { IsNull } from "typeorm"; import { inspect } from "node:util"; @@ -80,9 +80,11 @@ export async function importMuting( } async function mute(user: User, target: User) { + const now = new Date(); + await Mutings.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, muterId: user.id, muteeId: target.id, }); diff --git a/packages/backend/src/queue/processors/db/import-user-lists.ts b/packages/backend/src/queue/processors/db/import-user-lists.ts index f4e8523ba8..11f5f66675 100644 --- a/packages/backend/src/queue/processors/db/import-user-lists.ts +++ b/packages/backend/src/queue/processors/db/import-user-lists.ts @@ -10,7 +10,7 @@ import { UserLists, UserListJoinings, } from "@/models/index.js"; -import { genId, isSelfHost, stringToAcct, toPuny } from "backend-rs"; +import { genIdAt, isSelfHost, stringToAcct, toPuny } from "backend-rs"; import type { DbUserImportJobData } from "@/queue/types.js"; import { IsNull } from "typeorm"; import { inspect } from "node:util"; @@ -54,9 +54,10 @@ export async function importUserLists( }); if (list == null) { + const now = new Date(); list = await UserLists.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, userId: user.id, name: listName, }).then((x) => UserLists.findOneByOrFail(x.identifiers[0])); diff --git a/packages/backend/src/remote/activitypub/kernel/flag/index.ts b/packages/backend/src/remote/activitypub/kernel/flag/index.ts index c556605865..755d2b7d5e 100644 --- a/packages/backend/src/remote/activitypub/kernel/flag/index.ts +++ b/packages/backend/src/remote/activitypub/kernel/flag/index.ts @@ -4,7 +4,7 @@ import type { IFlag } from "../../type.js"; import { getApIds } from "../../type.js"; import { AbuseUserReports, Users } from "@/models/index.js"; import { In } from "typeorm"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; export default async ( actor: CacheableRemoteUser, @@ -23,9 +23,11 @@ export default async ( }); if (users.length < 1) return "skip"; + const now = new Date(); + await AbuseUserReports.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, targetUserId: users[0].id, targetUserHost: users[0].host, reporterId: actor.id, diff --git a/packages/backend/src/remote/activitypub/models/person.ts b/packages/backend/src/remote/activitypub/models/person.ts index dc3b29dc84..e861553e97 100644 --- a/packages/backend/src/remote/activitypub/models/person.ts +++ b/packages/backend/src/remote/activitypub/models/person.ts @@ -16,7 +16,7 @@ import type { IRemoteUser, CacheableUser } from "@/models/entities/user.js"; import { User } from "@/models/entities/user.js"; import type { Emoji } from "@/models/entities/emoji.js"; import { UserNotePining } from "@/models/entities/user-note-pining.js"; -import { genId, isSameOrigin, toPuny } from "backend-rs"; +import { genId, genIdAt, isSameOrigin, toPuny } from "backend-rs"; import { UserPublickey } from "@/models/entities/user-publickey.js"; import { isDuplicateKeyValueError } from "@/misc/is-duplicate-key-value-error.js"; import { UserProfile } from "@/models/entities/user-profile.js"; @@ -242,16 +242,17 @@ export async function createPerson( // Create user let user: IRemoteUser; + const now = new Date(); try { // Start transaction await db.transaction(async (transactionalEntityManager) => { user = (await transactionalEntityManager.save( new User({ - id: genId(), + id: genIdAt(now), avatarId: null, bannerId: null, - createdAt: new Date(), - lastFetchedAt: new Date(), + createdAt: now, + lastFetchedAt: now, name: truncate(person.name, nameLength), isLocked: !!person.manuallyApprovesFollowers, movedToUri: person.movedTo, diff --git a/packages/backend/src/server/api/common/signin.ts b/packages/backend/src/server/api/common/signin.ts index e5ca09df95..bafec3dfad 100644 --- a/packages/backend/src/server/api/common/signin.ts +++ b/packages/backend/src/server/api/common/signin.ts @@ -3,7 +3,7 @@ import type Koa from "koa"; import { config } from "@/config.js"; import type { ILocalUser } from "@/models/entities/user.js"; import { Signins } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import { publishMainStream } from "@/services/stream.js"; export default function (ctx: Koa.Context, user: ILocalUser, redirect = false) { @@ -29,9 +29,10 @@ export default function (ctx: Koa.Context, user: ILocalUser, redirect = false) { (async () => { // Append signin history + const now = new Date(); const record = await Signins.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, userId: user.id, ip: ctx.ip, headers: ctx.headers, diff --git a/packages/backend/src/server/api/common/signup.ts b/packages/backend/src/server/api/common/signup.ts index 67f06ac4e1..52ef938929 100644 --- a/packages/backend/src/server/api/common/signup.ts +++ b/packages/backend/src/server/api/common/signup.ts @@ -3,7 +3,7 @@ import { User } from "@/models/entities/user.js"; import { Users, UsedUsernames } from "@/models/index.js"; import { UserProfile } from "@/models/entities/user-profile.js"; import { IsNull } from "typeorm"; -import { genId, generateUserToken, hashPassword, toPuny } from "backend-rs"; +import { genIdAt, generateUserToken, hashPassword, toPuny } from "backend-rs"; import { UserKeypair } from "@/models/entities/user-keypair.js"; import { UsedUsername } from "@/models/entities/used-username.js"; import { db } from "@/db/postgre.js"; @@ -91,10 +91,12 @@ export async function signup(opts: { if (exist) throw new Error(" the username is already used"); + const now = new Date(); + account = await transactionalEntityManager.save( new User({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, username: username, usernameLower: username.toLowerCase(), host: host == null ? null : toPuny(host), @@ -125,7 +127,7 @@ export async function signup(opts: { await transactionalEntityManager.save( new UsedUsername({ - createdAt: new Date(), + createdAt: now, username: username.toLowerCase(), }), ); 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 c7a56d3a98..56eedbe602 100644 --- a/packages/backend/src/server/api/endpoints/admin/ad/create.ts +++ b/packages/backend/src/server/api/endpoints/admin/ad/create.ts @@ -1,6 +1,6 @@ import define from "@/server/api/define.js"; import { Ads } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; export const meta = { tags: ["admin"], @@ -32,9 +32,11 @@ export const paramDef = { } as const; export default define(meta, paramDef, async (ps) => { + const now = new Date(); + await Ads.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, expiresAt: new Date(ps.expiresAt), url: ps.url, imageUrl: ps.imageUrl, 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 1ae25e62d0..1bd83f3b95 100644 --- a/packages/backend/src/server/api/endpoints/admin/announcements/create.ts +++ b/packages/backend/src/server/api/endpoints/admin/announcements/create.ts @@ -1,6 +1,6 @@ import define from "@/server/api/define.js"; import { Announcements } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; export const meta = { tags: ["admin"], @@ -74,9 +74,10 @@ export const paramDef = { } as const; export default define(meta, paramDef, async (ps) => { + const now = new Date(); const announcement = await Announcements.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, updatedAt: null, title: ps.title, text: ps.text, diff --git a/packages/backend/src/server/api/endpoints/admin/invite.ts b/packages/backend/src/server/api/endpoints/admin/invite.ts index d220ae5e4a..912bb986df 100644 --- a/packages/backend/src/server/api/endpoints/admin/invite.ts +++ b/packages/backend/src/server/api/endpoints/admin/invite.ts @@ -1,7 +1,7 @@ import rndstr from "rndstr"; import define from "@/server/api/define.js"; import { RegistrationTickets } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; export const meta = { tags: ["admin"], @@ -38,9 +38,11 @@ export default define(meta, paramDef, async () => { chars: "2-9A-HJ-NP-Z", // [0-9A-Z] w/o [01IO] (32 patterns) }); + const now = new Date(); + await RegistrationTickets.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, code, }); diff --git a/packages/backend/src/server/api/endpoints/antennas/create.ts b/packages/backend/src/server/api/endpoints/antennas/create.ts index 76842df529..f8e4ed846d 100644 --- a/packages/backend/src/server/api/endpoints/antennas/create.ts +++ b/packages/backend/src/server/api/endpoints/antennas/create.ts @@ -1,5 +1,5 @@ import define from "@/server/api/define.js"; -import { fetchMeta, genId } from "backend-rs"; +import { fetchMeta, genIdAt } from "backend-rs"; import { Antennas, UserLists, UserGroupJoinings } from "@/models/index.js"; import { ApiError } from "@/server/api/error.js"; import { publishInternalEvent } from "@/services/stream.js"; @@ -152,9 +152,11 @@ export default define(meta, paramDef, async (ps, user) => { } } + const now = new Date(); + const antenna = await Antennas.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, userId: user.id, name: ps.name, src: ps.src, diff --git a/packages/backend/src/server/api/endpoints/app/create.ts b/packages/backend/src/server/api/endpoints/app/create.ts index 0d580d1535..05f511f399 100644 --- a/packages/backend/src/server/api/endpoints/app/create.ts +++ b/packages/backend/src/server/api/endpoints/app/create.ts @@ -1,6 +1,6 @@ import define from "@/server/api/define.js"; import { Apps } from "@/models/index.js"; -import { genId, generateSecureRandomString } from "backend-rs"; +import { genIdAt, generateSecureRandomString } from "backend-rs"; import { unique } from "@/prelude/array.js"; export const meta = { @@ -48,9 +48,10 @@ export default define(meta, paramDef, async (ps, user) => { ); // Create account + const now = new Date(); const app = await Apps.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, userId: user ? user.id : null, name: ps.name, description: ps.description, 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 f20219aa82..2f44c778d5 100644 --- a/packages/backend/src/server/api/endpoints/auth/session/generate.ts +++ b/packages/backend/src/server/api/endpoints/auth/session/generate.ts @@ -3,7 +3,7 @@ import { config } from "@/config.js"; import define from "@/server/api/define.js"; import { ApiError } from "@/server/api/error.js"; import { Apps, AuthSessions } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; export const meta = { tags: ["auth"], @@ -60,9 +60,10 @@ export default define(meta, paramDef, async (ps) => { const token = uuid(); // Create session token document + const now = new Date(); const doc = await AuthSessions.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, appId: app.id, token: token, }).then((x) => AuthSessions.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 29c6ca029a..f5ec33a14c 100644 --- a/packages/backend/src/server/api/endpoints/channels/create.ts +++ b/packages/backend/src/server/api/endpoints/channels/create.ts @@ -2,7 +2,7 @@ import define from "@/server/api/define.js"; import { ApiError } from "@/server/api/error.js"; import { Channels, DriveFiles } from "@/models/index.js"; import type { Channel } from "@/models/entities/channel.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; export const meta = { tags: ["channels"], @@ -55,9 +55,11 @@ export default define(meta, paramDef, async (ps, user) => { } } + const now = new Date(); + const channel = await Channels.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, userId: user.id, name: ps.name, description: ps.description || null, diff --git a/packages/backend/src/server/api/endpoints/channels/follow.ts b/packages/backend/src/server/api/endpoints/channels/follow.ts index fea6ca797b..afc55ac1cf 100644 --- a/packages/backend/src/server/api/endpoints/channels/follow.ts +++ b/packages/backend/src/server/api/endpoints/channels/follow.ts @@ -1,7 +1,7 @@ import define from "@/server/api/define.js"; import { ApiError } from "@/server/api/error.js"; import { Channels, ChannelFollowings } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import { publishUserEvent } from "@/services/stream.js"; export const meta = { @@ -37,9 +37,11 @@ export default define(meta, paramDef, async (ps, user) => { throw new ApiError(meta.errors.noSuchChannel); } + const now = new Date(); + await ChannelFollowings.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, followerId: user.id, followeeId: channel.id, }); diff --git a/packages/backend/src/server/api/endpoints/clips/create.ts b/packages/backend/src/server/api/endpoints/clips/create.ts index ae652d75c2..9e5e979509 100644 --- a/packages/backend/src/server/api/endpoints/clips/create.ts +++ b/packages/backend/src/server/api/endpoints/clips/create.ts @@ -1,5 +1,5 @@ import define from "@/server/api/define.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import { Clips } from "@/models/index.js"; export const meta = { @@ -33,9 +33,10 @@ export const paramDef = { } as const; export default define(meta, paramDef, async (ps, user) => { + const now = new Date(); const clip = await Clips.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, userId: user.id, name: ps.name, isPublic: ps.isPublic, 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 9ea570a6b7..1d9ef1831f 100644 --- a/packages/backend/src/server/api/endpoints/drive/folders/create.ts +++ b/packages/backend/src/server/api/endpoints/drive/folders/create.ts @@ -2,7 +2,7 @@ import { publishDriveStream } from "@/services/stream.js"; import define from "@/server/api/define.js"; import { ApiError } from "@/server/api/error.js"; import { DriveFolders } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; export const meta = { tags: ["drive"], @@ -52,9 +52,10 @@ export default define(meta, paramDef, async (ps, user) => { } // Create folder + const now = new Date(); const folder = await DriveFolders.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, name: ps.name, parentId: parent != null ? parent.id : null, userId: user.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 01c772bc3c..eda2d81e5c 100644 --- a/packages/backend/src/server/api/endpoints/gallery/posts/create.ts +++ b/packages/backend/src/server/api/endpoints/gallery/posts/create.ts @@ -1,6 +1,6 @@ import define from "@/server/api/define.js"; import { DriveFiles, GalleryPosts } from "@/models/index.js"; -import { HOUR, genId } from "backend-rs"; +import { HOUR, genIdAt } from "backend-rs"; import { GalleryPost } from "@/models/entities/gallery-post.js"; import type { DriveFile } from "@/models/entities/drive-file.js"; @@ -62,11 +62,13 @@ export default define(meta, paramDef, async (ps, user) => { throw new Error(); } + const now = new Date(); + const post = await GalleryPosts.insert( new GalleryPost({ - id: genId(), - createdAt: new Date(), - updatedAt: new Date(), + id: genIdAt(now), + createdAt: now, + updatedAt: now, title: ps.title, description: ps.description, userId: user.id, 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 13f7d82bb2..2b1e2aa01b 100644 --- a/packages/backend/src/server/api/endpoints/gallery/posts/like.ts +++ b/packages/backend/src/server/api/endpoints/gallery/posts/like.ts @@ -1,7 +1,7 @@ import define from "@/server/api/define.js"; import { ApiError } from "@/server/api/error.js"; import { GalleryPosts, GalleryLikes } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; export const meta = { tags: ["gallery"], @@ -51,10 +51,12 @@ export default define(meta, paramDef, async (ps, user) => { throw new ApiError(meta.errors.alreadyLiked); } + const now = new Date(); + // Create like await GalleryLikes.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, postId: post.id, userId: user.id, }); diff --git a/packages/backend/src/server/api/endpoints/i/2fa/register-key.ts b/packages/backend/src/server/api/endpoints/i/2fa/register-key.ts index 4991e8fc90..acf12b7168 100644 --- a/packages/backend/src/server/api/endpoints/i/2fa/register-key.ts +++ b/packages/backend/src/server/api/endpoints/i/2fa/register-key.ts @@ -2,7 +2,7 @@ import define from "@/server/api/define.js"; import { UserProfiles, AttestationChallenges } from "@/models/index.js"; import { promisify } from "node:util"; import * as crypto from "node:crypto"; -import { genId, verifyPassword } from "backend-rs"; +import { genIdAt, verifyPassword } from "backend-rs"; import { hash } from "@/server/api/2fa.js"; const randomBytes = promisify(crypto.randomBytes); @@ -39,13 +39,14 @@ export default define(meta, paramDef, async (ps, user) => { .replace(/\+/g, "-") .replace(/\//g, "_"); - const challengeId = genId(); + const now = new Date(); + const challengeId = genIdAt(now); await AttestationChallenges.insert({ userId: user.id, id: challengeId, challenge: hash(Buffer.from(challenge, "utf-8")).toString("hex"), - createdAt: new Date(), + createdAt: now, registrationChallenge: true, }); diff --git a/packages/backend/src/server/api/endpoints/i/read-announcement.ts b/packages/backend/src/server/api/endpoints/i/read-announcement.ts index 140eecfe67..65b24c6889 100644 --- a/packages/backend/src/server/api/endpoints/i/read-announcement.ts +++ b/packages/backend/src/server/api/endpoints/i/read-announcement.ts @@ -1,6 +1,6 @@ import define from "@/server/api/define.js"; import { ApiError } from "@/server/api/error.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import { AnnouncementReads, Announcements, Users } from "@/models/index.js"; import { publishMainStream } from "@/services/stream.js"; @@ -50,10 +50,12 @@ export default define(meta, paramDef, async (ps, user) => { return; } + const now = new Date(); + // Create read await AnnouncementReads.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, announcementId: ps.announcementId, userId: user.id, }); 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 7090f0914b..e778bd98d8 100644 --- a/packages/backend/src/server/api/endpoints/i/registry/set.ts +++ b/packages/backend/src/server/api/endpoints/i/registry/set.ts @@ -1,7 +1,7 @@ import { publishMainStream } from "@/services/stream.js"; import define from "@/server/api/define.js"; import { RegistryItems } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; export const meta = { requireCredential: true, @@ -41,10 +41,11 @@ export default define(meta, paramDef, async (ps, user) => { value: ps.value, }); } else { + const now = new Date(); await RegistryItems.insert({ - id: genId(), - createdAt: new Date(), - updatedAt: new Date(), + id: genIdAt(now), + createdAt: now, + updatedAt: now, userId: user.id, domain: null, scope: ps.scope, 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 4faae058c3..031f0e4eab 100644 --- a/packages/backend/src/server/api/endpoints/i/webhooks/create.ts +++ b/packages/backend/src/server/api/endpoints/i/webhooks/create.ts @@ -1,5 +1,5 @@ import define from "@/server/api/define.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import { Webhooks } from "@/models/index.js"; import { publishInternalEvent } from "@/services/stream.js"; import { webhookEventTypes } from "@/models/entities/webhook.js"; @@ -30,9 +30,10 @@ export const paramDef = { } as const; export default define(meta, paramDef, async (ps, user) => { + const now = new Date(); const webhook = await Webhooks.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, userId: user.id, name: ps.name, url: ps.url, diff --git a/packages/backend/src/server/api/endpoints/mute/create.ts b/packages/backend/src/server/api/endpoints/mute/create.ts index a8d37153a4..85548d4014 100644 --- a/packages/backend/src/server/api/endpoints/mute/create.ts +++ b/packages/backend/src/server/api/endpoints/mute/create.ts @@ -1,7 +1,7 @@ import define from "@/server/api/define.js"; import { ApiError } from "@/server/api/error.js"; import { getUser } from "@/server/api/common/getters.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import { Mutings, NoteWatchings } from "@/models/index.js"; import type { Muting } from "@/models/entities/muting.js"; import { publishUserEvent } from "@/services/stream.js"; @@ -79,10 +79,12 @@ export default define(meta, paramDef, async (ps, user) => { return; } + const now = new Date(); + // Create mute await Mutings.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, expiresAt: ps.expiresAt ? new Date(ps.expiresAt) : null, muterId: muter.id, muteeId: mutee.id, diff --git a/packages/backend/src/server/api/endpoints/notes/create.ts b/packages/backend/src/server/api/endpoints/notes/create.ts index 50179db5e2..55fb47b1ad 100644 --- a/packages/backend/src/server/api/endpoints/notes/create.ts +++ b/packages/backend/src/server/api/endpoints/notes/create.ts @@ -16,7 +16,7 @@ import { config } from "@/config.js"; import { noteVisibilities } from "@/types.js"; import { ApiError } from "@/server/api/error.js"; import define from "@/server/api/define.js"; -import { HOUR, genId } from "backend-rs"; +import { HOUR, genIdAt } from "backend-rs"; import { getNote } from "@/server/api/common/getters.js"; import { langmap } from "firefish-js"; import { createScheduledNoteJob } from "@/queue/index.js"; @@ -310,11 +310,13 @@ export default define(meta, paramDef, async (ps, user) => { } } + const now = new Date(); + // Create a post const note = await create( user, { - createdAt: new Date(), + createdAt: now, files: files, poll: ps.poll ? { @@ -347,7 +349,7 @@ export default define(meta, paramDef, async (ps, user) => { delay ? async (note) => { await ScheduledNotes.insert({ - id: genId(), + id: genIdAt(now), noteId: note.id, userId: user.id, scheduledAt: new Date(ps.scheduledAt as number), 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 e2c7ca951f..48bea4496f 100644 --- a/packages/backend/src/server/api/endpoints/notes/favorites/create.ts +++ b/packages/backend/src/server/api/endpoints/notes/favorites/create.ts @@ -1,5 +1,5 @@ import { NoteFavorites } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import define from "@/server/api/define.js"; import { ApiError } from "@/server/api/error.js"; import { getNote } from "@/server/api/common/getters.js"; @@ -54,10 +54,12 @@ export default define(meta, paramDef, async (ps, user) => { throw new ApiError(meta.errors.alreadyFavorited); } + const now = new Date(); + // Create favorite await NoteFavorites.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, noteId: note.id, userId: user.id, }); 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 b666e05835..72b5ebbf48 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 @@ -1,5 +1,5 @@ import { Notes, NoteThreadMutings } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import readNote from "@/services/note/read.js"; import define from "@/server/api/define.js"; import { getNote } from "@/server/api/common/getters.js"; @@ -49,9 +49,11 @@ export default define(meta, paramDef, async (ps, user) => { await readNote(user.id, mutedNotes); + const now = new Date(); + await NoteThreadMutings.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, threadId: note.threadId || note.id, userId: user.id, }); diff --git a/packages/backend/src/server/api/endpoints/pages/create.ts b/packages/backend/src/server/api/endpoints/pages/create.ts index 4980c49806..4677352258 100644 --- a/packages/backend/src/server/api/endpoints/pages/create.ts +++ b/packages/backend/src/server/api/endpoints/pages/create.ts @@ -1,5 +1,5 @@ import { Pages, DriveFiles } from "@/models/index.js"; -import { genId, HOUR } from "backend-rs"; +import { genIdAt, HOUR } from "backend-rs"; import { Page } from "@/models/entities/page.js"; import define from "@/server/api/define.js"; import { ApiError } from "@/server/api/error.js"; @@ -97,11 +97,13 @@ export default define(meta, paramDef, async (ps, user) => { } }); + const now = new Date(); + const page = await Pages.insert( new Page({ - id: genId(), - createdAt: new Date(), - updatedAt: new Date(), + id: genIdAt(now), + createdAt: now, + updatedAt: now, title: ps.title, name: ps.name, summary: ps.summary, diff --git a/packages/backend/src/server/api/endpoints/pages/like.ts b/packages/backend/src/server/api/endpoints/pages/like.ts index 1480b47e0b..e6c7f1fbb5 100644 --- a/packages/backend/src/server/api/endpoints/pages/like.ts +++ b/packages/backend/src/server/api/endpoints/pages/like.ts @@ -1,5 +1,5 @@ import { Pages, PageLikes } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import define from "@/server/api/define.js"; import { ApiError } from "@/server/api/error.js"; @@ -51,10 +51,12 @@ export default define(meta, paramDef, async (ps, user) => { throw new ApiError(meta.errors.alreadyLiked); } + const now = new Date(); + // Create like await PageLikes.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, pageId: page.id, userId: user.id, }); diff --git a/packages/backend/src/server/api/endpoints/promo/read.ts b/packages/backend/src/server/api/endpoints/promo/read.ts index 0509548b05..362e26c463 100644 --- a/packages/backend/src/server/api/endpoints/promo/read.ts +++ b/packages/backend/src/server/api/endpoints/promo/read.ts @@ -1,5 +1,5 @@ import { PromoReads } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import define from "@/server/api/define.js"; import { ApiError } from "@/server/api/error.js"; import { getNote } from "@/server/api/common/getters.js"; @@ -44,9 +44,11 @@ export default define(meta, paramDef, async (ps, user) => { return; } + const now = new Date(); + await PromoReads.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, noteId: note.id, userId: user.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 46535cb39d..b69f1e086b 100644 --- a/packages/backend/src/server/api/endpoints/renote-mute/create.ts +++ b/packages/backend/src/server/api/endpoints/renote-mute/create.ts @@ -1,6 +1,6 @@ -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import { RenoteMutings } from "@/models/index.js"; -import { RenoteMuting } from "@/models/entities/renote-muting.js"; +import type { RenoteMuting } from "@/models/entities/renote-muting.js"; import define from "@/server/api/define.js"; import { ApiError } from "@/server/api/error.js"; import { getUser } from "@/server/api/common/getters.js"; @@ -58,10 +58,12 @@ export default define(meta, paramDef, async (ps, user) => { throw new ApiError(meta.errors.alreadyMuting); } + const now = new Date(); + // Create mute await RenoteMutings.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, muterId: muter.id, muteeId: mutee.id, } as RenoteMuting); diff --git a/packages/backend/src/server/api/endpoints/reply-mute/create.ts b/packages/backend/src/server/api/endpoints/reply-mute/create.ts index fc8644a7e1..e92b846afa 100644 --- a/packages/backend/src/server/api/endpoints/reply-mute/create.ts +++ b/packages/backend/src/server/api/endpoints/reply-mute/create.ts @@ -1,6 +1,6 @@ -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import { ReplyMutings } from "@/models/index.js"; -import { ReplyMuting } from "@/models/entities/reply-muting.js"; +import type { ReplyMuting } from "@/models/entities/reply-muting.js"; import define from "@/server/api/define.js"; import { ApiError } from "@/server/api/error.js"; import { getUser } from "@/server/api/common/getters.js"; @@ -56,10 +56,12 @@ export default define(meta, paramDef, async (ps, user) => { throw new ApiError(meta.errors.alreadyMuting); } + const now = new Date(); + // Create mute await ReplyMutings.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, muterId: muter.id, muteeId: mutee.id, } as ReplyMuting); 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 58beb94a88..ed269de15f 100644 --- a/packages/backend/src/server/api/endpoints/request-reset-password.ts +++ b/packages/backend/src/server/api/endpoints/request-reset-password.ts @@ -3,7 +3,7 @@ import { IsNull } from "typeorm"; import { config } from "@/config.js"; import { Users, UserProfiles, PasswordResetRequests } from "@/models/index.js"; import { sendEmail } from "@/services/send-email.js"; -import { HOUR, genId } from "backend-rs"; +import { HOUR, genIdAt } from "backend-rs"; import define from "@/server/api/define.js"; export const meta = { @@ -54,10 +54,11 @@ export default define(meta, paramDef, async (ps) => { } const token = rndstr("a-z0-9", 64); + const now = new Date(); await PasswordResetRequests.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, userId: profile.userId, token, }); diff --git a/packages/backend/src/server/api/endpoints/sw/register.ts b/packages/backend/src/server/api/endpoints/sw/register.ts index dd8c7500b3..d2561baf47 100644 --- a/packages/backend/src/server/api/endpoints/sw/register.ts +++ b/packages/backend/src/server/api/endpoints/sw/register.ts @@ -1,4 +1,4 @@ -import { fetchMeta, genId } from "backend-rs"; +import { fetchMeta, genIdAt } from "backend-rs"; import { SwSubscriptions } from "@/models/index.js"; import define from "@/server/api/define.js"; @@ -76,9 +76,11 @@ export default define(meta, paramDef, async (ps, me) => { }; } + const now = new Date(); + await SwSubscriptions.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, userId: me.id, endpoint: ps.endpoint, auth: ps.auth, diff --git a/packages/backend/src/server/api/endpoints/users/groups/create.ts b/packages/backend/src/server/api/endpoints/users/groups/create.ts index e6ff909343..d1417ac36c 100644 --- a/packages/backend/src/server/api/endpoints/users/groups/create.ts +++ b/packages/backend/src/server/api/endpoints/users/groups/create.ts @@ -1,5 +1,5 @@ import { UserGroups, UserGroupJoinings } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import type { UserGroup } from "@/models/entities/user-group.js"; import type { UserGroupJoining } from "@/models/entities/user-group-joining.js"; import define from "@/server/api/define.js"; @@ -30,17 +30,19 @@ export const paramDef = { } as const; export default define(meta, paramDef, async (ps, user) => { + const now = new Date(); + const userGroup = await UserGroups.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, userId: user.id, name: ps.name, } as UserGroup).then((x) => UserGroups.findOneByOrFail(x.identifiers[0])); // Push the owner await UserGroupJoinings.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, userId: user.id, userGroupId: userGroup.id, } as UserGroupJoining); diff --git a/packages/backend/src/server/api/endpoints/users/groups/invitations/accept.ts b/packages/backend/src/server/api/endpoints/users/groups/invitations/accept.ts index f86f415d7a..c86b59dd49 100644 --- a/packages/backend/src/server/api/endpoints/users/groups/invitations/accept.ts +++ b/packages/backend/src/server/api/endpoints/users/groups/invitations/accept.ts @@ -1,5 +1,5 @@ import { UserGroupJoinings, UserGroupInvitations } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import type { UserGroupJoining } from "@/models/entities/user-group-joining.js"; import { ApiError } from "@/server/api/error.js"; import define from "@/server/api/define.js"; @@ -44,10 +44,12 @@ export default define(meta, paramDef, async (ps, user) => { throw new ApiError(meta.errors.noSuchInvitation); } + const now = new Date(); + // Push the user await UserGroupJoinings.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, userId: user.id, userGroupId: invitation.userGroupId, } as UserGroupJoining); diff --git a/packages/backend/src/server/api/endpoints/users/groups/invite.ts b/packages/backend/src/server/api/endpoints/users/groups/invite.ts index 62e13a4458..5aa90859e6 100644 --- a/packages/backend/src/server/api/endpoints/users/groups/invite.ts +++ b/packages/backend/src/server/api/endpoints/users/groups/invite.ts @@ -3,7 +3,7 @@ import { UserGroupJoinings, UserGroupInvitations, } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import type { UserGroupInvitation } from "@/models/entities/user-group-invitation.js"; import { createNotification } from "@/services/create-notification.js"; import { getUser } from "@/server/api/common/getters.js"; @@ -91,9 +91,11 @@ export default define(meta, paramDef, async (ps, me) => { throw new ApiError(meta.errors.alreadyInvited); } + const now = new Date(); + const invitation = await UserGroupInvitations.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, userId: user.id, userGroupId: userGroup.id, } as UserGroupInvitation).then((x) => 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 fa10bf24ce..2849ea0770 100644 --- a/packages/backend/src/server/api/endpoints/users/lists/create.ts +++ b/packages/backend/src/server/api/endpoints/users/lists/create.ts @@ -1,5 +1,5 @@ import { UserLists } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import type { UserList } from "@/models/entities/user-list.js"; import define from "@/server/api/define.js"; @@ -29,9 +29,10 @@ export const paramDef = { } as const; export default define(meta, paramDef, async (ps, user) => { + const now = new Date(); const userList = await UserLists.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, userId: user.id, name: ps.name, } as UserList).then((x) => UserLists.findOneByOrFail(x.identifiers[0])); 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 8a134cf9e7..27a185bc08 100644 --- a/packages/backend/src/server/api/endpoints/users/report-abuse.ts +++ b/packages/backend/src/server/api/endpoints/users/report-abuse.ts @@ -1,7 +1,7 @@ import * as mfm from "mfm-js"; import sanitizeHtml from "sanitize-html"; import { AbuseUserReports, UserProfiles, Users } from "@/models/index.js"; -import { genId, publishToModerationStream } from "backend-rs"; +import { genIdAt, publishToModerationStream } from "backend-rs"; import { sendEmail } from "@/services/send-email.js"; import { getUser } from "@/server/api/common/getters.js"; import { ApiError } from "@/server/api/error.js"; @@ -61,9 +61,11 @@ export default define(meta, paramDef, async (ps, me) => { throw new ApiError(meta.errors.cannotReportAdmin); } + const now = new Date(); + const report = await AbuseUserReports.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, targetUserId: user.id, targetUserHost: user.host, reporterId: me.id, diff --git a/packages/backend/src/server/api/private/signin.ts b/packages/backend/src/server/api/private/signin.ts index 1ed11bbbc2..c2620d8113 100644 --- a/packages/backend/src/server/api/private/signin.ts +++ b/packages/backend/src/server/api/private/signin.ts @@ -11,7 +11,7 @@ import { } from "@/models/index.js"; import type { ILocalUser } from "@/models/entities/user.js"; import { - genId, + genIdAt, hashPassword, isOldPasswordAlgorithm, verifyPassword, @@ -101,10 +101,12 @@ export default async (ctx: Koa.Context) => { } async function fail(status?: number, failure?: { id: string }) { + const now = new Date(); + // Append signin history await Signins.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, userId: user.id, ip: ctx.ip, headers: ctx.headers, @@ -251,13 +253,14 @@ export default async (ctx: Koa.Context) => { .replace(/\+/g, "-") .replace(/\//g, "_"); - const challengeId = genId(); + const now = new Date(); + const challengeId = genIdAt(now); await AttestationChallenges.insert({ userId: user.id, id: challengeId, challenge: hash(Buffer.from(challenge, "utf-8")).toString("hex"), - createdAt: new Date(), + createdAt: now, registrationChallenge: false, }); diff --git a/packages/backend/src/server/api/private/signup.ts b/packages/backend/src/server/api/private/signup.ts index 4dd4ffb231..59f26b49ba 100644 --- a/packages/backend/src/server/api/private/signup.ts +++ b/packages/backend/src/server/api/private/signup.ts @@ -5,7 +5,7 @@ import { Users, RegistrationTickets, UserPendings } from "@/models/index.js"; import { signup } from "@/server/api/common/signup.js"; import { config } from "@/config.js"; import { sendEmail } from "@/services/send-email.js"; -import { fetchMeta, genId, hashPassword } from "backend-rs"; +import { fetchMeta, genIdAt, hashPassword } from "backend-rs"; import { validateEmailForAccount } from "@/services/validate-email-for-account.js"; export default async (ctx: Koa.Context) => { @@ -84,9 +84,11 @@ export default async (ctx: Koa.Context) => { // Generate hash of password const hash = hashPassword(password); + const now = new Date(); + await UserPendings.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, code, email: emailAddress, username: username, diff --git a/packages/backend/src/services/blocking/create.ts b/packages/backend/src/services/blocking/create.ts index 2e5766c45b..b5e23c8277 100644 --- a/packages/backend/src/services/blocking/create.ts +++ b/packages/backend/src/services/blocking/create.ts @@ -15,7 +15,7 @@ import { UserListJoinings, UserLists, } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import { getActiveWebhooks } from "@/misc/webhook-cache.js"; import { webhookDeliver } from "@/queue/index.js"; @@ -28,9 +28,11 @@ export default async function (blocker: User, blockee: User) { removeFromList(blockee, blocker), ]); + const now = new Date(); + const blocking = { - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, blocker, blockerId: blocker.id, blockee, diff --git a/packages/backend/src/services/create-notification.ts b/packages/backend/src/services/create-notification.ts index 335ba561e7..55fa6819c1 100644 --- a/packages/backend/src/services/create-notification.ts +++ b/packages/backend/src/services/create-notification.ts @@ -8,7 +8,7 @@ import { Followings, } from "@/models/index.js"; import { - genId, + genIdAt, isSilencedServer, sendPushNotification, PushNotificationKind, @@ -61,10 +61,12 @@ export async function createNotification( } } + const now = new Date(); + // Create notification const notification = await Notifications.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, notifieeId: notifieeId, type: type, // 相手がこの通知をミュートしているようなら、既読を予めつけておく diff --git a/packages/backend/src/services/create-system-user.ts b/packages/backend/src/services/create-system-user.ts index d13d5a7bda..6c9e828900 100644 --- a/packages/backend/src/services/create-system-user.ts +++ b/packages/backend/src/services/create-system-user.ts @@ -3,7 +3,7 @@ import { genRsaKeyPair } from "@/misc/gen-key-pair.js"; import { User } from "@/models/entities/user.js"; import { UserProfile } from "@/models/entities/user-profile.js"; import { IsNull } from "typeorm"; -import { generateUserToken, genId, hashPassword } from "backend-rs"; +import { generateUserToken, genIdAt, hashPassword } from "backend-rs"; import { UserKeypair } from "@/models/entities/user-keypair.js"; import { UsedUsername } from "@/models/entities/used-username.js"; import { db } from "@/db/postgre.js"; @@ -21,6 +21,8 @@ export async function createSystemUser(username: string) { let account!: User; + const now = new Date(); + // Start transaction await db.transaction(async (transactionalEntityManager) => { const exist = await transactionalEntityManager.findOneBy(User, { @@ -32,8 +34,8 @@ export async function createSystemUser(username: string) { account = await transactionalEntityManager .insert(User, { - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, username: username, usernameLower: username.toLowerCase(), host: null, @@ -60,7 +62,7 @@ export async function createSystemUser(username: string) { }); await transactionalEntityManager.insert(UsedUsername, { - createdAt: new Date(), + createdAt: now, username: username.toLowerCase(), }); }); diff --git a/packages/backend/src/services/following/create.ts b/packages/backend/src/services/following/create.ts index 49852ee9ef..df9ab8ab2f 100644 --- a/packages/backend/src/services/following/create.ts +++ b/packages/backend/src/services/following/create.ts @@ -17,7 +17,7 @@ import { Instances, UserProfiles, } from "@/models/index.js"; -import { genId, isSilencedServer } from "backend-rs"; +import { genIdAt, isSilencedServer } from "backend-rs"; import { createNotification } from "@/services/create-notification.js"; import { isDuplicateKeyValueError } from "@/misc/is-duplicate-key-value-error.js"; import type { Packed } from "@/misc/schema.js"; @@ -46,9 +46,11 @@ export async function insertFollowingDoc( let alreadyFollowed = false; + const now = new Date(); + await Followings.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, followerId: follower.id, followeeId: followee.id, diff --git a/packages/backend/src/services/following/requests/create.ts b/packages/backend/src/services/following/requests/create.ts index 146e20efd9..e4f093dfc1 100644 --- a/packages/backend/src/services/following/requests/create.ts +++ b/packages/backend/src/services/following/requests/create.ts @@ -4,7 +4,7 @@ import renderFollow from "@/remote/activitypub/renderer/follow.js"; import { deliver } from "@/queue/index.js"; import type { User } from "@/models/entities/user.js"; import { Blockings, FollowRequests, Users } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import { createNotification } from "@/services/create-notification.js"; import { config } from "@/config.js"; @@ -42,9 +42,11 @@ export default async function ( if (blocking) throw new Error("blocking"); if (blocked) throw new Error("blocked"); + const now = new Date(); + const followRequest = await FollowRequests.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, followerId: follower.id, followeeId: followee.id, requestId, diff --git a/packages/backend/src/services/i/pin.ts b/packages/backend/src/services/i/pin.ts index b44ba5f9fa..42fc09b406 100644 --- a/packages/backend/src/services/i/pin.ts +++ b/packages/backend/src/services/i/pin.ts @@ -7,7 +7,7 @@ import type { User } from "@/models/entities/user.js"; import type { Note } from "@/models/entities/note.js"; import { Notes, UserNotePinings, Users } from "@/models/index.js"; import type { UserNotePining } from "@/models/entities/user-note-pining.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import { deliverToFollowers } from "@/remote/activitypub/deliver-manager.js"; import { deliverToRelays } from "@/services/relay.js"; @@ -49,9 +49,11 @@ export async function addPinned( ); } + const now = new Date(); + await UserNotePinings.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, userId: user.id, noteId: note.id, } as UserNotePining); diff --git a/packages/backend/src/services/insert-moderation-log.ts b/packages/backend/src/services/insert-moderation-log.ts index 9c76cf45ac..6fcaeda146 100644 --- a/packages/backend/src/services/insert-moderation-log.ts +++ b/packages/backend/src/services/insert-moderation-log.ts @@ -1,5 +1,5 @@ import { ModerationLogs } from "@/models/index.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import type { User } from "@/models/entities/user.js"; export async function insertModerationLog( @@ -7,9 +7,10 @@ export async function insertModerationLog( type: string, info?: Record<string, any>, ) { + const now = new Date(); await ModerationLogs.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, userId: moderator.id, type: type, info: info || {}, diff --git a/packages/backend/src/services/messages/create.ts b/packages/backend/src/services/messages/create.ts index 709e9bc235..f1f26065bd 100644 --- a/packages/backend/src/services/messages/create.ts +++ b/packages/backend/src/services/messages/create.ts @@ -8,7 +8,7 @@ import { Users, } from "@/models/index.js"; import { - genId, + genIdAt, sendPushNotification, publishToChatStream, publishToGroupChatStream, @@ -36,9 +36,10 @@ export async function createMessage( file: DriveFile | null, uri?: string, ) { + const now = new Date(); const message = { - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, fileId: file ? file.id : null, recipientId: recipientUser ? recipientUser.id : null, groupId: recipientGroup ? recipientGroup.id : null, diff --git a/packages/backend/src/services/note/polls/vote.ts b/packages/backend/src/services/note/polls/vote.ts index 32213ddcc8..c1070576f1 100644 --- a/packages/backend/src/services/note/polls/vote.ts +++ b/packages/backend/src/services/note/polls/vote.ts @@ -3,7 +3,7 @@ import type { CacheableUser } from "@/models/entities/user.js"; import type { Note } from "@/models/entities/note.js"; import { PollVotes, NoteWatchings, Polls, Blockings } from "@/models/index.js"; import { Not } from "typeorm"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import { createNotification } from "@/services/create-notification.js"; export default async function ( @@ -43,10 +43,12 @@ export default async function ( throw new Error("already voted"); } + const now = new Date(); + // Create vote await PollVotes.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, noteId: note.id, userId: user.id, choice: choice, diff --git a/packages/backend/src/services/note/reaction/create.ts b/packages/backend/src/services/note/reaction/create.ts index 3b8b97cefd..54b0bfaaab 100644 --- a/packages/backend/src/services/note/reaction/create.ts +++ b/packages/backend/src/services/note/reaction/create.ts @@ -13,7 +13,7 @@ import { Blockings, } from "@/models/index.js"; import { IsNull, Not } from "typeorm"; -import { decodeReaction, genId, toDbReaction } from "backend-rs"; +import { decodeReaction, genIdAt, toDbReaction } from "backend-rs"; import { createNotification } from "@/services/create-notification.js"; import deleteReaction from "./delete.js"; import { isDuplicateKeyValueError } from "@/misc/is-duplicate-key-value-error.js"; @@ -47,9 +47,11 @@ export default async ( // TODO: cache reaction = await toDbReaction(reaction, user.host); + const now = new Date(); + const record: NoteReaction = { - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, noteId: note.id, userId: user.id, reaction, diff --git a/packages/backend/src/services/user-list/push.ts b/packages/backend/src/services/user-list/push.ts index 141584e294..1ec4289672 100644 --- a/packages/backend/src/services/user-list/push.ts +++ b/packages/backend/src/services/user-list/push.ts @@ -3,14 +3,16 @@ import type { User } from "@/models/entities/user.js"; import type { UserList } from "@/models/entities/user-list.js"; import { UserListJoinings, Users } from "@/models/index.js"; import type { UserListJoining } from "@/models/entities/user-list-joining.js"; -import { genId } from "backend-rs"; +import { genIdAt } from "backend-rs"; import { fetchProxyAccount } from "@/misc/fetch-proxy-account.js"; import createFollowing from "@/services/following/create.js"; export async function pushUserToUserList(target: User, list: UserList) { + const now = new Date(); + await UserListJoinings.insert({ - id: genId(), - createdAt: new Date(), + id: genIdAt(now), + createdAt: now, userId: target.id, userListId: list.id, } as UserListJoining);