Skip to content

Commit e7d2ed9

Browse files
committed
fix(backend:database): ensure MySQL connection uses UTC timezone
1 parent 1eb57d6 commit e7d2ed9

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

backend/src/infrastructure/database/database.module.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { DrizzleMySqlConfig, DrizzleMySqlModule } from '@knaadh/nestjs-drizzle-mysql2'
2-
import { BeforeApplicationShutdown, Global, Inject, Module } from '@nestjs/common'
2+
import { BeforeApplicationShutdown, Global, Inject, Module, OnModuleInit } from '@nestjs/common'
33
import { MySql2Client } from 'drizzle-orm/mysql2'
4+
import { Connection, Pool } from 'mysql2'
45
import { configuration } from '../../configuration/config.environment'
56
import { DB_TOKEN_PROVIDER } from './constants'
67
import { DatabaseLogger } from './database.logger'
@@ -26,9 +27,17 @@ import * as schema from './schema'
2627
})
2728
]
2829
})
29-
export class DatabaseModule implements BeforeApplicationShutdown {
30+
export class DatabaseModule implements OnModuleInit, BeforeApplicationShutdown {
3031
constructor(@Inject(DB_TOKEN_PROVIDER) private readonly db: DBSchema & { session: { client: MySql2Client } }) {}
3132

33+
onModuleInit() {
34+
const pool: Pool = (this.db as any).$client
35+
pool.on('connection', (conn: Connection) => {
36+
// Force UTC timezone for every new MySQL connection.
37+
conn.query(`SET time_zone = '+00:00'`)
38+
})
39+
}
40+
3241
async beforeApplicationShutdown() {
3342
await this.db.session.client.end()
3443
}

0 commit comments

Comments
 (0)