chore: Deprecate extra in favor of driver options (#6772)

**What**
Deprecate databse_extra in favor of database_driver_options

Co-authored-by: Sebastian Rindom <7554214+srindom@users.noreply.github.com>
This commit is contained in:
Adrien de PerettiandSebastian Rindom authored and GitHub committed 2024-03-21 14:45:11 +00:00
1 parent 56481e683d
commit 1ef9c78cea
8 files changed
+64 -14

No files matched your search

+8
View File
@@ -0,0 +1,8 @@
---
"@medusajs/medusa": patch
"medusa-test-utils": patch
"@medusajs/types": patch
"@medusajs/utils": patch
---
chore: v2 - deprecate extra in favor of driver options
@@ -15,6 +15,7 @@ const { logger } = require("@medusajs/medusa-cli/dist/reporter")
module.exports = { module.exports = {
initDb: async function ({ initDb: async function ({
cwd, cwd,
// use for v1 datasource only
database_extra, database_extra,
env, env,
force_modules_migration, force_modules_migration,
+5 -5
View File
@@ -8,15 +8,15 @@ import {
import { import {
ContainerRegistrationKeys, ContainerRegistrationKeys,
FlagRouter, FlagRouter,
MedusaV2Flag,
isObject, isObject,
MedusaV2Flag,
} from "@medusajs/utils" } from "@medusajs/utils"
import { import {
MODULE_PACKAGE_NAMES,
MedusaApp, MedusaApp,
MedusaAppMigrateUp, MedusaAppMigrateUp,
MedusaAppOutput, MedusaAppOutput,
MedusaModule, MedusaModule,
MODULE_PACKAGE_NAMES,
Modules, Modules,
ModulesDefinition, ModulesDefinition,
} from "@medusajs/modules-sdk" } from "@medusajs/modules-sdk"
@@ -71,7 +71,7 @@ export async function migrateMedusaApp(
injectedDependencies[ContainerRegistrationKeys.PG_CONNECTION]?.client injectedDependencies[ContainerRegistrationKeys.PG_CONNECTION]?.client
?.config?.connection?.connectionString ?? ?.config?.connection?.connectionString ??
configModule.projectConfig.database_url, configModule.projectConfig.database_url,
driverOptions: configModule.projectConfig.database_extra, driverOptions: configModule.projectConfig.database_driver_options,
debug: !!(configModule.projectConfig.database_logging ?? false), debug: !!(configModule.projectConfig.database_logging ?? false),
}, },
} }
@@ -136,7 +136,7 @@ export const loadMedusaApp = async (
const sharedResourcesConfig = { const sharedResourcesConfig = {
database: { database: {
clientUrl: configModule.projectConfig.database_url, clientUrl: configModule.projectConfig.database_url,
driverOptions: configModule.projectConfig.database_extra, driverOptions: configModule.projectConfig.database_driver_options,
debug: !!(configModule.projectConfig.database_logging ?? false), debug: !!(configModule.projectConfig.database_logging ?? false),
}, },
} }
@@ -262,7 +262,7 @@ export async function runModulesLoader({
const sharedResourcesConfig = { const sharedResourcesConfig = {
database: { database: {
clientUrl: configModule.projectConfig.database_url, clientUrl: configModule.projectConfig.database_url,
driverOptions: configModule.projectConfig.database_extra, driverOptions: configModule.projectConfig.database_driver_options,
debug: !!(configModule.projectConfig.database_logging ?? false), debug: !!(configModule.projectConfig.database_logging ?? false),
}, },
} }
+6 -6
View File
@@ -14,18 +14,18 @@ export default async ({ container, configModule }: Options): Promise<any> => {
// Share a knex connection to be consumed by the shared modules // Share a knex connection to be consumed by the shared modules
const connectionString = configModule.projectConfig.database_url const connectionString = configModule.projectConfig.database_url
const extra: any = configModule.projectConfig.database_extra || {} const driverOptions: any =
configModule.projectConfig.database_driver_options || {}
const schema = configModule.projectConfig.database_schema || "public" const schema = configModule.projectConfig.database_schema || "public"
const idleTimeoutMillis = extra.idleTimeoutMillis ?? undefined // prevent null to be passed const idleTimeoutMillis = driverOptions.pool?.idleTimeoutMillis ?? undefined // prevent null to be passed
const poolMax = extra.max const poolMax = driverOptions.pool?.max
delete extra.max delete driverOptions.pool
delete extra.idleTimeoutMillis
const pgConnection = ModulesSdkUtils.createPgConnection({ const pgConnection = ModulesSdkUtils.createPgConnection({
clientUrl: connectionString, clientUrl: connectionString,
schema, schema,
driverOptions: extra, driverOptions,
pool: { pool: {
max: poolMax, max: poolMax,
idleTimeoutMillis, idleTimeoutMillis,
@@ -355,6 +355,41 @@ export type ProjectConfigOptions = {
} }
} }
/**
* An object that includes additional configurations to pass to the database connection for v2. You can pass any configuration. One defined configuration to pass is
* `ssl` which enables support for TLS/SSL connections.
*
* This is useful for production databases, which can be supported by setting the `rejectUnauthorized` attribute of `ssl` object to `false`.
* During development, it’s recommended not to pass this option.
*
* @example
* ```js title="medusa-config.js"
* module.exports = {
* projectConfig: {
* database_driver_options:
* process.env.NODE_ENV !== "development"
* ? { connection: { ssl: { rejectUnauthorized: false } } }
* : {},
* // ...
* },
* // ...
* }
* ```
*/
database_driver_options?: Record<string, unknown> & {
connection?: {
/**
* Configure support for TLS/SSL connection
*/
ssl?: {
/**
* Whether to fail connection if the server certificate is verified against the list of supplied CAs and the hostname and no match is found.
*/
rejectUnauthorized?: false
}
}
}
/** /**
* Used to specify the URL to connect to Redis. This is only used for scheduled jobs. If you omit this configuration, scheduled jobs won't work. * Used to specify the URL to connect to Redis. This is only used for scheduled jobs. If you omit this configuration, scheduled jobs won't work.
* *
+3 -1
View File
@@ -254,7 +254,9 @@ export interface ModuleServiceInitializeOptions {
user?: string user?: string
password?: string password?: string
database?: string database?: string
driverOptions?: Record<string, unknown> driverOptions?: Record<string, unknown> & {
connection?: Record<string, unknown>
}
debug?: boolean debug?: boolean
pool?: Record<string, unknown> pool?: Record<string, unknown>
} }
@@ -75,7 +75,7 @@ export async function mikroOrmCreateConnection(
let schema = database.schema || "public" let schema = database.schema || "public"
let driverOptions = database.driverOptions ?? { let driverOptions = database.driverOptions ?? {
connection: { ssl: true }, connection: { ssl: false },
} }
let clientUrl = database.clientUrl let clientUrl = database.clientUrl
@@ -1,5 +1,6 @@
import { knex } from "@mikro-orm/knex" import { knex } from "@mikro-orm/knex"
import { ModuleServiceInitializeOptions } from "@medusajs/types" import { ModuleServiceInitializeOptions } from "@medusajs/types"
import { isDefined } from "../common"
type Options = ModuleServiceInitializeOptions["database"] type Options = ModuleServiceInitializeOptions["database"]
@@ -9,7 +10,10 @@ type Options = ModuleServiceInitializeOptions["database"]
*/ */
export function createPgConnection(options: Options) { export function createPgConnection(options: Options) {
const { pool, schema = "public", clientUrl, driverOptions } = options const { pool, schema = "public", clientUrl, driverOptions } = options
const ssl = options.driverOptions?.ssl ?? false const ssl =
options.driverOptions?.ssl ??
options.driverOptions?.connection?.ssl ??
false
return knex<any, any>({ return knex<any, any>({
client: "pg", client: "pg",