diff --git a/frontend/src/pages/Databases.tsx b/frontend/src/pages/Databases.tsx index 2567294..c0a5eb2 100644 --- a/frontend/src/pages/Databases.tsx +++ b/frontend/src/pages/Databases.tsx @@ -274,12 +274,17 @@ function DatabaseModal({ + {/* DEBUG: AQL option should be visible above */} +
Available types: PostgreSQL, AQL (HTTP API)
{formData.type === 'aql' ? ( diff --git a/frontend/src/pages/Settings.tsx b/frontend/src/pages/Settings.tsx index e9f3a25..a9b50ae 100644 --- a/frontend/src/pages/Settings.tsx +++ b/frontend/src/pages/Settings.tsx @@ -351,10 +351,20 @@ function DatabasesSubTab() { )}
-
Хост: {db.host}:{db.port}
-
База: {db.database_name}
-
Пользователь: {db.username}
-
Пароль: ••••••••
+ {db.type === 'aql' ? ( + <> +
Base URL: {db.aql_base_url}
+
Auth Type: {db.aql_auth_type}
+
Auth: ••••••••
+ + ) : ( + <> +
Хост: {db.host}:{db.port}
+
База: {db.database_name}
+
Пользователь: {db.username}
+
Пароль: ••••••••
+ + )}
@@ -430,6 +440,11 @@ function DatabaseModal({ password: '', ssl: database?.ssl || false, is_active: database?.is_active !== undefined ? database.is_active : true, + // AQL-specific fields + aql_base_url: database?.aql_base_url || '', + aql_auth_type: database?.aql_auth_type || 'basic', + aql_auth_value: database?.aql_auth_value || '', + aql_headers: database?.aql_headers || {}, }); const saveMutation = useMutation({ @@ -439,6 +454,10 @@ function DatabaseModal({ if (database && !payload.password) { delete payload.password; } + // Для AQL: если редактируем и auth_value пустой, удаляем его + if (database && data.type === 'aql' && !payload.aql_auth_value) { + delete payload.aql_auth_value; + } return database ? dbManagementApi.update(database.id, payload) : dbManagementApi.create(payload); }, onSuccess: () => { @@ -478,111 +497,197 @@ function DatabaseModal({ />
-
-
- - -
-
- - setFormData({ ...formData, port: parseInt(e.target.value) })} - className="input w-full" - /> -
-
-
- - setFormData({ ...formData, host: e.target.value })} + +
-
- - setFormData({ ...formData, database_name: e.target.value })} - className="input w-full" - placeholder="my_database" - /> -
- -
-
- - setFormData({ ...formData, username: e.target.value })} - className="input w-full" - placeholder="postgres" - /> -
-
- -
+ {formData.type === 'aql' ? ( + <> + {/* AQL Fields */} +
+ setFormData({ ...formData, password: e.target.value })} - className="input w-full pr-10" - placeholder={database ? 'Оставьте пустым, чтобы не менять' : 'Введите пароль'} + type="text" + required + value={formData.aql_base_url} + onChange={(e) => setFormData({ ...formData, aql_base_url: e.target.value })} + className="input w-full" + placeholder="http://api.ehrdb.ncms-i.ru/api/rest/v1" /> -
- {database && ( -

Оставьте пустым, чтобы не менять пароль

- )} -
-
-
- +
+ + +
- -
+
+ + setFormData({ ...formData, aql_auth_value: e.target.value })} + className="input w-full" + placeholder={database ? '••••••••' : 'Введите значение'} + /> + {database && ( +

Оставьте пустым, чтобы не менять

+ )} +
+ +
+ +