feat(create-medusa-app): set database name to project name (#8727)
* add check and prompt for db name * change var format * remove log * remove log
This commit is contained in:
@@ -73,7 +73,6 @@ export default async ({
|
||||
title: "",
|
||||
verbose,
|
||||
}
|
||||
const dbName = !skipDb && !dbUrl ? `medusa-${nanoid(4)}` : ""
|
||||
let isProjectCreated = false
|
||||
let isDbInitialized = false
|
||||
let printedMessage = false
|
||||
@@ -101,13 +100,18 @@ export default async ({
|
||||
const projectPath = getProjectPath(projectName, directoryPath)
|
||||
const installNextjs = withNextjsStarter || (await askForNextjsStarter())
|
||||
|
||||
let { client, dbConnectionString } = !skipDb
|
||||
let dbName = !skipDb && !dbUrl ? `medusa-${slugify(projectName)}` : ""
|
||||
|
||||
let { client, dbConnectionString, ...rest } = !skipDb
|
||||
? await getDbClientAndCredentials({
|
||||
dbName,
|
||||
dbUrl,
|
||||
verbose,
|
||||
})
|
||||
: { client: null, dbConnectionString: "" }
|
||||
if ("dbName" in rest) {
|
||||
dbName = rest.dbName as string
|
||||
}
|
||||
isDbInitialized = true
|
||||
|
||||
track("CMA_OPTIONS", {
|
||||
@@ -178,6 +182,7 @@ export default async ({
|
||||
try {
|
||||
inviteToken = await prepareProject({
|
||||
directory: projectPath,
|
||||
dbName,
|
||||
dbConnectionString,
|
||||
seed,
|
||||
spinner,
|
||||
|
||||
@@ -16,6 +16,12 @@ export default async function createDb({ client, db }: CreateDbOptions) {
|
||||
await client.query(`CREATE DATABASE "${db}"`)
|
||||
}
|
||||
|
||||
async function doesDbExist (client: pg.Client, dbName: string): Promise<boolean> {
|
||||
const result = await client.query(`SELECT datname FROM pg_catalog.pg_database WHERE datname='${dbName}';`)
|
||||
|
||||
return !!result.rowCount
|
||||
}
|
||||
|
||||
export async function runCreateDb({
|
||||
client,
|
||||
dbName,
|
||||
@@ -61,6 +67,7 @@ async function getForDbName({
|
||||
}): Promise<{
|
||||
client: pg.Client
|
||||
dbConnectionString: string
|
||||
dbName: string
|
||||
}> {
|
||||
let client!: pg.Client
|
||||
let postgresUsername = "postgres"
|
||||
@@ -132,6 +139,23 @@ async function getForDbName({
|
||||
}
|
||||
}
|
||||
|
||||
// check if database exists
|
||||
if (await doesDbExist(client, dbName)) {
|
||||
const { newDbName } = await inquirer.prompt([
|
||||
{
|
||||
type: "input",
|
||||
name: "newDbName",
|
||||
message: `A database already exists with the name ${dbName}, please enter a name for the database:`,
|
||||
default: dbName,
|
||||
validate: (input) => {
|
||||
return typeof input === "string" && input.length > 0 && input !== dbName
|
||||
},
|
||||
},
|
||||
])
|
||||
|
||||
dbName = newDbName
|
||||
}
|
||||
|
||||
// format connection string
|
||||
const dbConnectionString = formatConnectionString({
|
||||
user: postgresUsername,
|
||||
@@ -143,6 +167,7 @@ async function getForDbName({
|
||||
return {
|
||||
client,
|
||||
dbConnectionString,
|
||||
dbName
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ const DEFAULT_REDIS_URL = "redis://localhost:6379"
|
||||
|
||||
type PrepareOptions = {
|
||||
directory: string
|
||||
dbName?: string
|
||||
dbConnectionString: string
|
||||
seed?: boolean
|
||||
spinner: Ora
|
||||
@@ -31,6 +32,7 @@ type PrepareOptions = {
|
||||
|
||||
export default async ({
|
||||
directory,
|
||||
dbName,
|
||||
dbConnectionString,
|
||||
seed,
|
||||
spinner,
|
||||
@@ -73,6 +75,10 @@ export default async ({
|
||||
let env = `MEDUSA_ADMIN_ONBOARDING_TYPE=${onboardingType}${EOL}STORE_CORS=${STORE_CORS}${EOL}ADMIN_CORS=${ADMIN_CORS}${EOL}AUTH_CORS=${AUTH_CORS}${EOL}REDIS_URL=${DEFAULT_REDIS_URL}${EOL}JWT_SECRET=supersecret${EOL}COOKIE_SECRET=supersecret`
|
||||
|
||||
if (!skipDb) {
|
||||
if (dbName) {
|
||||
env += `${EOL}DB_NAME=${dbName}`
|
||||
dbConnectionString = dbConnectionString.replace(dbName, "$DB_NAME")
|
||||
}
|
||||
env += `${EOL}DATABASE_URL=${dbConnectionString}`
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user