-
Notifications
You must be signed in to change notification settings - Fork 2
fix(ui): Send credentials for existing database deployments #56
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -734,7 +734,10 @@ | |||||
|
|
||||||
| <div class="credentials-form"> | ||||||
| <div class="form-field"> | ||||||
| <label for="dbName">Database Name</label> | ||||||
| <label for="dbName"> | ||||||
| Database Name | ||||||
| <span v-if="form.database.mode === 'existing'" class="required">*</span> | ||||||
| </label> | ||||||
| <input | ||||||
| id="dbName" | ||||||
| v-model="form.database.dbName" | ||||||
|
|
@@ -745,14 +748,21 @@ | |||||
|
|
||||||
| <div class="form-row"> | ||||||
| <div class="form-field"> | ||||||
| <label for="dbUser">Username</label> | ||||||
| <label for="dbUser"> | ||||||
| Username | ||||||
| <span v-if="form.database.mode === 'existing'" class="required">*</span> | ||||||
| </label> | ||||||
| <input id="dbUser" v-model="form.database.dbUser" type="text" placeholder="app" /> | ||||||
| </div> | ||||||
|
|
||||||
| <div class="form-field"> | ||||||
| <label for="dbPassword"> | ||||||
| Password | ||||||
| <span v-if="form.database.mode === 'create'" class="required">*</span> | ||||||
| <span | ||||||
| v-if="form.database.mode === 'create' || form.database.mode === 'existing'" | ||||||
| class="required" | ||||||
| >*</span | ||||||
| > | ||||||
| </label> | ||||||
| <input | ||||||
| id="dbPassword" | ||||||
|
|
@@ -837,13 +847,15 @@ | |||||
| </div> | ||||||
| <div class="preview-item"> | ||||||
| <span class="preview-label">Database</span> | ||||||
| <code class="preview-value">{{ | ||||||
| form.database.dbName || (form.name ? form.name.replace(/-/g, "_") : "app_db") | ||||||
| }}</code> | ||||||
| <code class="preview-value">{{ form.database.dbName || "—" }}</code> | ||||||
| </div> | ||||||
| <div class="preview-item"> | ||||||
| <span class="preview-label">User</span> | ||||||
| <code class="preview-value">{{ form.database.dbUser || "app" }}</code> | ||||||
| <code class="preview-value">{{ form.database.dbUser || "—" }}</code> | ||||||
| </div> | ||||||
| <div class="preview-item"> | ||||||
| <span class="preview-label">Password</span> | ||||||
| <code class="preview-value">{{ form.database.dbPassword ? "••••••••" : "—" }}</code> | ||||||
| </div> | ||||||
| <div class="preview-hint"> | ||||||
| <i class="pi pi-info-circle" /> | ||||||
|
|
@@ -1652,8 +1664,15 @@ const canProceed = computed(() => { | |||||
| if (deploymentMode.value === "easy") { | ||||||
| if (currentStep.value === 2) { | ||||||
| if (form.database.type !== "none") { | ||||||
| if (form.database.mode === "existing" && !form.database.existingContainer) { | ||||||
| return false; | ||||||
| if (form.database.mode === "existing") { | ||||||
| if ( | ||||||
| !form.database.existingContainer || | ||||||
| !form.database.dbName.trim() || | ||||||
| !form.database.dbUser.trim() || | ||||||
| !form.database.dbPassword.trim() | ||||||
| ) { | ||||||
| return false; | ||||||
| } | ||||||
| } | ||||||
| if (form.database.mode === "external") { | ||||||
| if (!form.database.externalHost.trim() || !form.database.externalPort.trim()) { | ||||||
|
|
@@ -2367,25 +2386,48 @@ const handleCreate = async () => { | |||||
| } | ||||||
| } | ||||||
|
|
||||||
| const mapDbToPayload = (db: DatabaseFormConfig) => ({ | ||||||
| alias: db.alias, | ||||||
| type: db.type, | ||||||
| mode: db.mode, | ||||||
| service: db.service || undefined, | ||||||
| existing_container: db.mode === "existing" ? db.existingContainer : undefined, | ||||||
| external_host: db.mode === "external" ? db.externalHost : undefined, | ||||||
| external_port: | ||||||
| (db.mode === "existing" || db.mode === "external") && db.externalPort ? parseInt(db.externalPort) : undefined, | ||||||
| database_name: db.dbName || undefined, | ||||||
| username: db.dbUser || undefined, | ||||||
| password: db.mode === "existing" || db.mode === "external" ? db.dbPassword || undefined : undefined, | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The mapping logic should also include
Suggested change
|
||||||
| env_prefix: db.envPrefix || db.alias, | ||||||
| }); | ||||||
|
|
||||||
| const databases: Record<string, any>[] = []; | ||||||
|
|
||||||
| if (form.database.mode === "existing" && form.database.existingContainer && form.database.type !== "none") { | ||||||
| databases.push( | ||||||
| mapDbToPayload({ | ||||||
| id: "primary", | ||||||
| alias: "primary", | ||||||
| type: form.database.type, | ||||||
| mode: "existing", | ||||||
| service: "", | ||||||
| existingContainer: form.database.existingContainer, | ||||||
| externalHost: "", | ||||||
| externalPort: form.database.externalPort, | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Passing
Suggested change
|
||||||
| dbName: form.database.dbName, | ||||||
| dbUser: form.database.dbUser, | ||||||
| dbPassword: form.database.dbPassword, | ||||||
| envPrefix: "", | ||||||
| }), | ||||||
| ); | ||||||
| } | ||||||
|
|
||||||
| if (advancedOptions.multiDatabase && additionalDatabases.value.length > 0) { | ||||||
| const databases = additionalDatabases.value | ||||||
| .filter((db) => db.type !== "none") | ||||||
| .map((db) => ({ | ||||||
| alias: db.alias, | ||||||
| type: db.type, | ||||||
| mode: db.mode, | ||||||
| service: db.service || undefined, | ||||||
| existing_container: db.mode === "existing" ? db.existingContainer : undefined, | ||||||
| external_host: db.mode === "external" ? db.externalHost : undefined, | ||||||
| external_port: db.mode === "external" && db.externalPort ? parseInt(db.externalPort) : undefined, | ||||||
| database_name: db.dbName || undefined, | ||||||
| username: db.dbUser || undefined, | ||||||
| env_prefix: db.envPrefix || db.alias, | ||||||
| })); | ||||||
|
|
||||||
| if (databases.length > 0) { | ||||||
| payload.databases = databases; | ||||||
| } | ||||||
| additionalDatabases.value.filter((db) => db.type !== "none").forEach((db) => databases.push(mapDbToPayload(db))); | ||||||
| } | ||||||
|
|
||||||
| if (databases.length > 0) { | ||||||
| payload.databases = databases; | ||||||
| } | ||||||
|
|
||||||
| if (finalDomain) { | ||||||
|
|
||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When the mode is 'existing', the
externalPortmight be provided as a string depending on input handling. However, 'existing' database connections typically rely on internal network naming or theexisting_containerfield rather than an external port. If the backend specifically requires a port for existing containers, ensure it defaults safely.