// Databases (servidor de banco compartilhado entre projetos)
component {
scrollable(
direction = vertical,
class = scroll_fill,
) {
column(width = fill, spacing = 8, class = form_panel) {
text(class = label_cap, content = "DATABASES (@svc_mdbs_count)")
text(
class = muted,
content = """
Cada database tem usuário próprio, sem acesso aos demais. O
projeto consumidor recebe a connection string numa env var.
""",
)
scrollable(direction = vertical, class = env_list_scroll) {
column(class = kv_list) {
row(class = kv_row, :for-each = svc_mdbs, var = d) {
button(
class = env_del,
on_click = mdb_delete:@d.id,
text = "✕",
)
text(class = env_sep)
button(class = tab, on_click = mdb_show:@d.id, text = @d.name)
text(class = kv_val_fill, content = "→ @d.project")
text(class = muted, content = "@d.env_var")
}
}
}
row(class = kv_row, if = @mdb_url, not_equals = "") {
text(class = kv_key, content = "URL")
text(class = kv_val_fill, content = "@mdb_url_short")
button(
class = copy_btn,
on_click = clipboard:mdb_url,
text = Copiar,
)
}
text(class = label_cap, content = "NOVO DATABASE")
input(
class = field_input,
form_control = f_mdb_name,
:value = f_mdb_name,
on_change = field:f_mdb_name,
placeholder = "nome (a-z, 0-9, _)",
)
select(
class = select,
:options = svc_mdb_projects,
:value = f_mdb_project,
on_change = field:f_mdb_project,
placeholder = "projeto consumidor...",
labelField = name,
valueField = id,
)
input(
class = field_input,
form_control = f_mdb_env,
:value = f_mdb_env,
on_change = field:f_mdb_env,
placeholder = "env var (padrão DATABASE_URL / MONGODB_URI)",
)
input(
class = field_input,
form_control = f_mdb_limit,
:value = f_mdb_limit,
on_change = field:f_mdb_limit,
placeholder = "limite de conexões (opcional; não vale no Mongo)",
)
input(
class = field_input,
form_control = f_mdb_timeout,
:value = f_mdb_timeout,
on_change = field:f_mdb_timeout,
placeholder = "timeout de query em ms (opcional; só Postgres)",
)
toggle(
:checked = f_mdb_overwrite,
on_toggle = field:f_mdb_overwrite,
label = " Sobrescrever a env var se o projeto já a tiver",
)
toggle(
:checked = f_mdb_skip_env,
on_toggle = field:f_mdb_skip_env,
label = " Não mexer em env var (vou migrar os dados antes)",
)
row(class = env_add) {
button(
class = btn_primary,
on_click = mdb_create,
text = "Criar database",
)
text(class = muted, content = "@svc_action_msg")
}
}
}
}