{"version":3,"file":"connection.mjs","sources":["../src/connection.ts"],"sourcesContent":["import knex from 'knex';\nimport type { Knex } from 'knex';\n\nconst clientMap = {\n sqlite: 'better-sqlite3',\n mysql: 'mysql2',\n postgres: 'pg',\n};\n\nfunction isClientValid(config: { client?: unknown }): config is { client: keyof typeof clientMap } {\n return Object.keys(clientMap).includes(config.client as string);\n}\n\nexport const createConnection = (userConfig: Knex.Config, strapiConfig?: Partial) => {\n if (!isClientValid(userConfig)) {\n throw new Error(`Unsupported database client ${userConfig.client}`);\n }\n\n const knexConfig: Knex.Config = { ...userConfig, client: (clientMap as any)[userConfig.client] };\n\n // initialization code to run upon opening a new connection\n if (strapiConfig?.pool?.afterCreate) {\n knexConfig.pool = knexConfig.pool || {};\n // if the user has set their own afterCreate in config, we will replace it and call it\n const userAfterCreate = knexConfig.pool?.afterCreate;\n const strapiAfterCreate = strapiConfig.pool.afterCreate;\n knexConfig.pool.afterCreate = (\n conn: unknown,\n done: (err: Error | null | undefined, connection: any) => void\n ) => {\n strapiAfterCreate(conn, (err: Error | null | undefined, nativeConn: any) => {\n if (err) {\n return done(err, nativeConn);\n }\n if (userAfterCreate) {\n return userAfterCreate(nativeConn, done);\n }\n return done(null, nativeConn);\n });\n };\n }\n\n return knex(knexConfig);\n};\n"],"names":["clientMap","sqlite","mysql","postgres","isClientValid","config","Object","keys","includes","client","createConnection","userConfig","strapiConfig","Error","knexConfig","pool","afterCreate","userAfterCreate","strapiAfterCreate","conn","done","err","nativeConn","knex"],"mappings":";;AAGA,MAAMA,SAAAA,GAAY;IAChBC,MAAAA,EAAQ,gBAAA;IACRC,KAAAA,EAAO,QAAA;IACPC,QAAAA,EAAU;AACZ,CAAA;AAEA,SAASC,cAAcC,MAA4B,EAAA;AACjD,IAAA,OAAOC,OAAOC,IAAI,CAACP,WAAWQ,QAAQ,CAACH,OAAOI,MAAM,CAAA;AACtD;AAEO,MAAMC,gBAAAA,GAAmB,CAACC,UAAAA,EAAyBC,YAAAA,GAAAA;IACxD,IAAI,CAACR,cAAcO,UAAAA,CAAAA,EAAa;AAC9B,QAAA,MAAM,IAAIE,KAAAA,CAAM,CAAC,4BAA4B,EAAEF,UAAAA,CAAWF,MAAM,CAAA,CAAE,CAAA;AACpE,IAAA;AAEA,IAAA,MAAMK,UAAAA,GAA0B;AAAE,QAAA,GAAGH,UAAU;AAAEF,QAAAA,MAAAA,EAAQ,SAAkB,CAACE,UAAAA,CAAWF,MAAM;AAAE,KAAA;;IAG/F,IAAIG,YAAAA,EAAcG,MAAMC,WAAAA,EAAa;AACnCF,QAAAA,UAAAA,CAAWC,IAAI,GAAGD,UAAAA,CAAWC,IAAI,IAAI,EAAC;;QAEtC,MAAME,eAAAA,GAAkBH,UAAAA,CAAWC,IAAI,EAAEC,WAAAA;AACzC,QAAA,MAAME,iBAAAA,GAAoBN,YAAAA,CAAaG,IAAI,CAACC,WAAW;AACvDF,QAAAA,UAAAA,CAAWC,IAAI,CAACC,WAAW,GAAG,CAC5BG,IAAAA,EACAC,IAAAA,GAAAA;YAEAF,iBAAAA,CAAkBC,IAAAA,EAAM,CAACE,GAAAA,EAA+BC,UAAAA,GAAAA;AACtD,gBAAA,IAAID,GAAAA,EAAK;AACP,oBAAA,OAAOD,KAAKC,GAAAA,EAAKC,UAAAA,CAAAA;AACnB,gBAAA;AACA,gBAAA,IAAIL,eAAAA,EAAiB;AACnB,oBAAA,OAAOA,gBAAgBK,UAAAA,EAAYF,IAAAA,CAAAA;AACrC,gBAAA;AACA,gBAAA,OAAOA,KAAK,IAAA,EAAME,UAAAA,CAAAA;AACpB,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;AACF,IAAA;AAEA,IAAA,OAAOC,IAAAA,CAAKT,UAAAA,CAAAA;AACd;;;;"}