Учёт DEPO в мастере: четыре вопроса по порядку, скрипт собирается сам из ответов
СУБД → сервер, порт и имя базы → где запускать обработку обмена → логин администратора или скрипт. Выбор плитками, под ним — поля выбранного способа и своя кнопка. Скрипт показывается сразу и пересобирается при любой правке выше (без кнопки «Обновить»), собирается и до адреса сервера (без адреса не сохраняется). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -236,7 +236,8 @@ func (h *setupHandlers) wizardDepoRecheck(w http.ResponseWriter, r *http.Request
|
||||
wizDepoGo(w, r, "done", "всё перепроверено", true)
|
||||
}
|
||||
|
||||
// depoSetupForm — сервер DEPO и способ обработки из формы экрана «Подготовка базы» (логин bj не трогается).
|
||||
// depoSetupForm — сервер DEPO и способ обработки из формы экрана «Подготовка базы» (логин bj не трогается;
|
||||
// пустой адрес сервера не ошибка — скрипту он не нужен, подключению проверяют вызывающие).
|
||||
func (h *setupHandlers) depoSetupForm(r *http.Request) (FancyMSSQLSettings, string, bool, string) {
|
||||
s := h.rc.Snapshot().Fancy
|
||||
dbType := "mssql"
|
||||
@@ -271,9 +272,6 @@ func (h *setupHandlers) depoSetupForm(r *http.Request) (FancyMSSQLSettings, stri
|
||||
if dbType == "postgres" && db == "" {
|
||||
return s, "", agent, "для PostgreSQL укажите имя базы DEPO"
|
||||
}
|
||||
if server == "" {
|
||||
return s, db, agent, "укажите адрес сервера DEPO"
|
||||
}
|
||||
return s, db, agent, ""
|
||||
}
|
||||
|
||||
@@ -307,7 +305,7 @@ func depoScriptCreds(r *http.Request, s *FancyMSSQLSettings) string {
|
||||
}
|
||||
|
||||
// wizardDepoScript — POST /admin/setup/wizard-depo/script.sql: один скрипт подготовки базы файлом
|
||||
// (view=1 — текстом для показа на странице).
|
||||
// (view=1 — текстом для показа на странице: экран пересобирает его при каждой правке ответов).
|
||||
func (h *setupHandlers) wizardDepoScript(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Method != http.MethodPost || !requireDepo(w, r) {
|
||||
return
|
||||
@@ -330,9 +328,11 @@ func (h *setupHandlers) wizardDepoScript(w http.ResponseWriter, r *http.Request)
|
||||
}
|
||||
depoEnsureLogin(&s)
|
||||
s.DepoTablesMode = "script"
|
||||
if err := h.rc.UpdateFancy(s); err != nil {
|
||||
fail("не сохранилось: " + err.Error())
|
||||
return
|
||||
if s.Server != "" { // скрипт собирается и до адреса сервера (экран обновляет его на ходу) — без адреса не сохраняем
|
||||
if err := h.rc.UpdateFancy(s); err != nil {
|
||||
fail("не сохранилось: " + err.Error())
|
||||
return
|
||||
}
|
||||
}
|
||||
body := depoSetupScript(s, db, s.User, s.Password, agent)
|
||||
w.Header().Set("Cache-Control", "no-store")
|
||||
@@ -356,6 +356,9 @@ func (h *setupHandlers) wizardDepoSetup(w http.ResponseWriter, r *http.Request)
|
||||
return
|
||||
}
|
||||
s, db, agent, bad := h.depoSetupForm(r)
|
||||
if bad == "" && s.Server == "" {
|
||||
bad = "укажите адрес сервера DEPO"
|
||||
}
|
||||
if bad != "" {
|
||||
wizDepoGo(w, r, "setup", bad, false)
|
||||
return
|
||||
@@ -417,7 +420,7 @@ func (h *setupHandlers) wizardDepoSetup(w http.ResponseWriter, r *http.Request)
|
||||
found, err := depoDiscover(ctx, s)
|
||||
switch {
|
||||
case err != nil || len(found) == 0:
|
||||
wizDepoGo(w, r, "setup", "логину "+s.User+" не видна ни одна база DEPO — выполнен ли скрипт? Можно указать базу вручную («Дополнительно»)", false)
|
||||
wizDepoGo(w, r, "setup", "логину "+s.User+" не видна ни одна база DEPO — выполнен ли скрипт? Можно вписать имя базы в поле «Имя базы»", false)
|
||||
return
|
||||
case len(found) > 1:
|
||||
http.Redirect(w, r, "/admin/wizard?step=3&sub=setup&cands="+url.QueryEscape(strings.Join(found, ","))+
|
||||
|
||||
Reference in New Issue
Block a user