🌳
pt0/serverF/dbF/doKysConnF.mts
1import { Kysely, PostgresDialect, type LogEvent } from 'kysely'
2import pg from 'pg'
4import { maskQs } from './maskQsF.mts'
7type KyselyConnParams = {
8 qsName: string
9 extQs: string
10 password: string
13export const doKysConn = ({qsName, extQs, password}: KyselyConnParams) => {
14 if (isVeryVerbose) {
15 console.log('connecting to db (kysley)', qsName, maskQs(extQs))
16 }
18 const dialect = new PostgresDialect({
19 pool: new pg.Pool({
20 connectionString: extQs,
21 min: 2,
22 max: 6,
23 connectionTimeoutMillis: 3000,
24 idleTimeoutMillis: 30000,
25 statement_timeout: 30000
26 })
27 })
29 const logFn = (event: LogEvent) => {
30 if (event.level === 'error') {
31 console.error('kysely:error:', event.error)
32 return
33 }
34 if (isVeryVerbose) {
35 console.log(`kysely:query:`, event.query.sql)
36 console.log(`kysely:query: duration: ${event.queryDurationMillis.toFixed(1)}ms`)
37 }
38 }
40 const db = new Kysely({
41 dialect,
42 log: logFn
43 })
45 return db