{"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,SAAY,GAAA;IAChBC,MAAQ,EAAA,gBAAA;IACRC,KAAO,EAAA,QAAA;IACPC,QAAU,EAAA;AACZ,CAAA;AAEA,SAASC,cAAcC,MAA4B,EAAA;AACjD,IAAA,OAAOC,OAAOC,IAAI,CAACP,WAAWQ,QAAQ,CAACH,OAAOI,MAAM,CAAA;AACtD;AAEO,MAAMC,gBAAmB,GAAA,CAACC,UAAyBC,EAAAA,YAAAA,GAAAA;IACxD,IAAI,CAACR,cAAcO,UAAa,CAAA,EAAA;QAC9B,MAAM,IAAIE,MAAM,CAAC,4BAA4B,EAAEF,UAAWF,CAAAA,MAAM,CAAC,CAAC,CAAA;AACpE;AAEA,IAAA,MAAMK,UAA0B,GAAA;AAAE,QAAA,GAAGH,UAAU;AAAEF,QAAAA,MAAAA,EAAQ,SAAkB,CAACE,UAAAA,CAAWF,MAAM;AAAE,KAAA;;IAG/F,IAAIG,YAAAA,EAAcG,MAAMC,WAAa,EAAA;AACnCF,QAAAA,UAAAA,CAAWC,IAAI,GAAGD,UAAWC,CAAAA,IAAI,IAAI,EAAC;;QAEtC,MAAME,eAAAA,GAAkBH,UAAWC,CAAAA,IAAI,EAAEC,WAAAA;AACzC,QAAA,MAAME,iBAAoBN,GAAAA,YAAAA,CAAaG,IAAI,CAACC,WAAW;AACvDF,QAAAA,UAAAA,CAAWC,IAAI,CAACC,WAAW,GAAG,CAC5BG,IACAC,EAAAA,IAAAA,GAAAA;YAEAF,iBAAkBC,CAAAA,IAAAA,EAAM,CAACE,GAA+BC,EAAAA,UAAAA,GAAAA;AACtD,gBAAA,IAAID,GAAK,EAAA;AACP,oBAAA,OAAOD,KAAKC,GAAKC,EAAAA,UAAAA,CAAAA;AACnB;AACA,gBAAA,IAAIL,eAAiB,EAAA;AACnB,oBAAA,OAAOA,gBAAgBK,UAAYF,EAAAA,IAAAA,CAAAA;AACrC;AACA,gBAAA,OAAOA,KAAK,IAAME,EAAAA,UAAAA,CAAAA;AACpB,aAAA,CAAA;AACF,SAAA;AACF;AAEA,IAAA,OAAOC,IAAKT,CAAAA,UAAAA,CAAAA;AACd;;;;"}