Skip to content

Commit ba3451e

Browse files
committed
fix(ui): Require credentials for existing database mode
Database name, username, and password are now required fields when using an existing database. Step validation blocks progress until all three are filled. Preview shows actual values instead of generated defaults. Signed-off-by: nfebe <fenn25.fn@gmail.com>
1 parent cb81c69 commit ba3451e

1 file changed

Lines changed: 57 additions & 42 deletions

File tree

src/components/NewDeploymentModal.vue

Lines changed: 57 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -734,7 +734,10 @@
734734

735735
<div class="credentials-form">
736736
<div class="form-field">
737-
<label for="dbName">Database Name</label>
737+
<label for="dbName">
738+
Database Name
739+
<span v-if="form.database.mode === 'existing'" class="required">*</span>
740+
</label>
738741
<input
739742
id="dbName"
740743
v-model="form.database.dbName"
@@ -745,14 +748,21 @@
745748

746749
<div class="form-row">
747750
<div class="form-field">
748-
<label for="dbUser">Username</label>
751+
<label for="dbUser">
752+
Username
753+
<span v-if="form.database.mode === 'existing'" class="required">*</span>
754+
</label>
749755
<input id="dbUser" v-model="form.database.dbUser" type="text" placeholder="app" />
750756
</div>
751757

752758
<div class="form-field">
753759
<label for="dbPassword">
754760
Password
755-
<span v-if="form.database.mode === 'create'" class="required">*</span>
761+
<span
762+
v-if="form.database.mode === 'create' || form.database.mode === 'existing'"
763+
class="required"
764+
>*</span
765+
>
756766
</label>
757767
<input
758768
id="dbPassword"
@@ -837,23 +847,15 @@
837847
</div>
838848
<div class="preview-item">
839849
<span class="preview-label">Database</span>
840-
<code class="preview-value">{{
841-
form.database.dbName ||
842-
(form.name ? form.name.replace(/-/g, "_") + "_primary_db" : "app_primary_db")
843-
}}</code>
850+
<code class="preview-value">{{ form.database.dbName || "—" }}</code>
844851
</div>
845852
<div class="preview-item">
846853
<span class="preview-label">User</span>
847-
<code class="preview-value">{{
848-
form.database.dbUser ||
849-
(form.name ? form.name.replace(/-/g, "_") + "_primary_user" : "app_primary_user")
850-
}}</code>
854+
<code class="preview-value">{{ form.database.dbUser || "—" }}</code>
851855
</div>
852856
<div class="preview-item">
853857
<span class="preview-label">Password</span>
854-
<code class="preview-value">{{
855-
form.database.dbPassword ? "••••••••" : "(auto-generated)"
856-
}}</code>
858+
<code class="preview-value">{{ form.database.dbPassword ? "••••••••" : "—" }}</code>
857859
</div>
858860
<div class="preview-hint">
859861
<i class="pi pi-info-circle" />
@@ -1662,8 +1664,15 @@ const canProceed = computed(() => {
16621664
if (deploymentMode.value === "easy") {
16631665
if (currentStep.value === 2) {
16641666
if (form.database.type !== "none") {
1665-
if (form.database.mode === "existing" && !form.database.existingContainer) {
1666-
return false;
1667+
if (form.database.mode === "existing") {
1668+
if (
1669+
!form.database.existingContainer ||
1670+
!form.database.dbName.trim() ||
1671+
!form.database.dbUser.trim() ||
1672+
!form.database.dbPassword.trim()
1673+
) {
1674+
return false;
1675+
}
16671676
}
16681677
if (form.database.mode === "external") {
16691678
if (!form.database.externalHost.trim() || !form.database.externalPort.trim()) {
@@ -2377,38 +2386,44 @@ const handleCreate = async () => {
23772386
}
23782387
}
23792388
2389+
const mapDbToPayload = (db: DatabaseFormConfig) => ({
2390+
alias: db.alias,
2391+
type: db.type,
2392+
mode: db.mode,
2393+
service: db.service || undefined,
2394+
existing_container: db.mode === "existing" ? db.existingContainer : undefined,
2395+
external_host: db.mode === "external" ? db.externalHost : undefined,
2396+
external_port:
2397+
(db.mode === "existing" || db.mode === "external") && db.externalPort ? parseInt(db.externalPort) : undefined,
2398+
database_name: db.dbName || undefined,
2399+
username: db.dbUser || undefined,
2400+
password: db.mode === "existing" || db.mode === "external" ? db.dbPassword || undefined : undefined,
2401+
env_prefix: db.envPrefix || db.alias,
2402+
});
2403+
23802404
const databases: Record<string, any>[] = [];
23812405
23822406
if (form.database.mode === "existing" && form.database.existingContainer && form.database.type !== "none") {
2383-
databases.push({
2384-
alias: "primary",
2385-
type: form.database.type,
2386-
mode: "existing",
2387-
existing_container: form.database.existingContainer,
2388-
database_name: form.database.dbName || undefined,
2389-
username: form.database.dbUser || undefined,
2390-
password: form.database.dbPassword || undefined,
2391-
external_port: form.database.externalPort ? parseInt(form.database.externalPort) : undefined,
2392-
});
2407+
databases.push(
2408+
mapDbToPayload({
2409+
id: "primary",
2410+
alias: "primary",
2411+
type: form.database.type,
2412+
mode: "existing",
2413+
service: "",
2414+
existingContainer: form.database.existingContainer,
2415+
externalHost: "",
2416+
externalPort: form.database.externalPort,
2417+
dbName: form.database.dbName,
2418+
dbUser: form.database.dbUser,
2419+
dbPassword: form.database.dbPassword,
2420+
envPrefix: "",
2421+
}),
2422+
);
23932423
}
23942424
23952425
if (advancedOptions.multiDatabase && additionalDatabases.value.length > 0) {
2396-
const extraDbs = additionalDatabases.value
2397-
.filter((db) => db.type !== "none")
2398-
.map((db) => ({
2399-
alias: db.alias,
2400-
type: db.type,
2401-
mode: db.mode,
2402-
service: db.service || undefined,
2403-
existing_container: db.mode === "existing" ? db.existingContainer : undefined,
2404-
external_host: db.mode === "external" ? db.externalHost : undefined,
2405-
external_port: db.mode === "external" && db.externalPort ? parseInt(db.externalPort) : undefined,
2406-
database_name: db.dbName || undefined,
2407-
username: db.dbUser || undefined,
2408-
password: db.mode === "existing" || db.mode === "external" ? db.dbPassword || undefined : undefined,
2409-
env_prefix: db.envPrefix || db.alias,
2410-
}));
2411-
databases.push(...extraDbs);
2426+
additionalDatabases.value.filter((db) => db.type !== "none").forEach((db) => databases.push(mapDbToPayload(db)));
24122427
}
24132428
24142429
if (databases.length > 0) {

0 commit comments

Comments
 (0)