summaryrefslogtreecommitdiff
path: root/packages/backend/src/postgres.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/src/postgres.ts')
-rw-r--r--packages/backend/src/postgres.ts58
1 files changed, 40 insertions, 18 deletions
diff --git a/packages/backend/src/postgres.ts b/packages/backend/src/postgres.ts
index 1a5fdc8412..632fd58927 100644
--- a/packages/backend/src/postgres.ts
+++ b/packages/backend/src/postgres.ts
@@ -5,9 +5,12 @@
// https://github.com/typeorm/typeorm/issues/2400
import pg from 'pg';
-import { DataSource, Logger } from 'typeorm';
+import { DataSource, Logger, type QueryRunner } from 'typeorm';
import * as highlight from 'cli-highlight';
import { entities as charts } from '@/core/chart/entities.js';
+import { Config } from '@/config.js';
+import MisskeyLogger from '@/logger.js';
+import { bindThis } from '@/decorators.js';
import { MiAbuseUserReport } from '@/models/AbuseUserReport.js';
import { MiAbuseReportNotificationRecipient } from '@/models/AbuseReportNotificationRecipient.js';
@@ -42,7 +45,6 @@ import { MiNote } from '@/models/Note.js';
import { MiNoteFavorite } from '@/models/NoteFavorite.js';
import { MiNoteReaction } from '@/models/NoteReaction.js';
import { MiNoteThreadMuting } from '@/models/NoteThreadMuting.js';
-import { MiNoteUnread } from '@/models/NoteUnread.js';
import { MiPage } from '@/models/Page.js';
import { MiPageLike } from '@/models/PageLike.js';
import { MiPasswordResetRequest } from '@/models/PasswordResetRequest.js';
@@ -76,14 +78,16 @@ import { MiRoleAssignment } from '@/models/RoleAssignment.js';
import { MiFlash } from '@/models/Flash.js';
import { MiFlashLike } from '@/models/FlashLike.js';
import { MiUserMemo } from '@/models/UserMemo.js';
-import { NoteEdit } from '@/models/NoteEdit.js';
+import { MiChatMessage } from '@/models/ChatMessage.js';
+import { MiChatRoom } from '@/models/ChatRoom.js';
+import { MiChatRoomMembership } from '@/models/ChatRoomMembership.js';
+import { MiChatRoomInvitation } from '@/models/ChatRoomInvitation.js';
import { MiBubbleGameRecord } from '@/models/BubbleGameRecord.js';
import { MiReversiGame } from '@/models/ReversiGame.js';
+import { MiChatApproval } from '@/models/ChatApproval.js';
+import { MiSystemAccount } from '@/models/SystemAccount.js';
+import { NoteEdit } from '@/models/NoteEdit.js';
import { MiNoteSchedule } from '@/models/NoteSchedule.js';
-
-import { Config } from '@/config.js';
-import MisskeyLogger from '@/logger.js';
-import { bindThis } from '@/decorators.js';
import { SkLatestNote } from '@/models/LatestNote.js';
import { SkApContext } from '@/models/SkApContext.js';
import { SkApFetchLog } from '@/models/SkApFetchLog.js';
@@ -98,7 +102,8 @@ const sqlLogger = dbLogger.createSubLogger('sql', 'gray');
export type LoggerProps = {
disableQueryTruncation?: boolean;
enableQueryParamLogging?: boolean;
-}
+ printReplicationMode?: boolean,
+};
function highlightSql(sql: string) {
return highlight.highlight(sql, {
@@ -123,8 +128,10 @@ class MyCustomLogger implements Logger {
}
@bindThis
- private transformQueryLog(sql: string) {
- let modded = sql;
+ private transformQueryLog(sql: string, opts?: {
+ prefix?: string;
+ }) {
+ let modded = opts?.prefix ? opts.prefix + sql : sql;
if (!this.props.disableQueryTruncation) {
modded = truncateSql(modded);
}
@@ -142,18 +149,27 @@ class MyCustomLogger implements Logger {
}
@bindThis
- public logQuery(query: string, parameters?: any[]) {
- sqlLogger.info(this.transformQueryLog(query), this.transformParameters(parameters));
+ public logQuery(query: string, parameters?: any[], queryRunner?: QueryRunner) {
+ const prefix = (this.props.printReplicationMode && queryRunner)
+ ? `[${queryRunner.getReplicationMode()}] `
+ : undefined;
+ sqlLogger.info(this.transformQueryLog(query, { prefix }), this.transformParameters(parameters));
}
@bindThis
- public logQueryError(error: string, query: string, parameters?: any[]) {
- sqlLogger.error(this.transformQueryLog(query), this.transformParameters(parameters));
+ public logQueryError(error: string, query: string, parameters?: any[], queryRunner?: QueryRunner) {
+ const prefix = (this.props.printReplicationMode && queryRunner)
+ ? `[${queryRunner.getReplicationMode()}] `
+ : undefined;
+ sqlLogger.error(this.transformQueryLog(query, { prefix }), this.transformParameters(parameters));
}
@bindThis
- public logQuerySlow(time: number, query: string, parameters?: any[]) {
- sqlLogger.warn(this.transformQueryLog(query), this.transformParameters(parameters));
+ public logQuerySlow(time: number, query: string, parameters?: any[], queryRunner?: QueryRunner) {
+ const prefix = (this.props.printReplicationMode && queryRunner)
+ ? `[${queryRunner.getReplicationMode()}] `
+ : undefined;
+ sqlLogger.warn(this.transformQueryLog(query, { prefix }), this.transformParameters(parameters));
}
@bindThis
@@ -205,7 +221,6 @@ export const entities = [
MiNoteReaction,
MiNoteSchedule,
MiNoteThreadMuting,
- MiNoteUnread,
MiPage,
MiPageLike,
MiGalleryPost,
@@ -217,6 +232,7 @@ export const entities = [
MiEmoji,
MiHashtag,
MiSwSubscription,
+ MiSystemAccount,
MiAbuseUserReport,
MiAbuseReportNotificationRecipient,
MiRegistrationTicket,
@@ -245,9 +261,14 @@ export const entities = [
MiFlash,
MiFlashLike,
MiUserMemo,
- NoteEdit,
+ MiChatMessage,
+ MiChatRoom,
+ MiChatRoomMembership,
+ MiChatRoomInvitation,
+ MiChatApproval,
MiBubbleGameRecord,
MiReversiGame,
+ NoteEdit,
...charts,
];
@@ -297,6 +318,7 @@ export function createPostgresDataSource(config: Config) {
? new MyCustomLogger({
disableQueryTruncation: config.logging?.sql?.disableQueryTruncation,
enableQueryParamLogging: config.logging?.sql?.enableQueryParamLogging,
+ printReplicationMode: !!config.dbReplications,
})
: undefined,
maxQueryExecutionTime: 300,