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 && (
+
Оставьте пустым, чтобы не менять
+ )}
+
+
+
+
+
+
+
+
+
+ >
+ ) : (
+ <>
+ {/* PostgreSQL Fields */}
+
+
+
+
+ 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"
+ />
+
+
+
+
+ setFormData({ ...formData, password: e.target.value })}
+ className="input w-full pr-10"
+ placeholder={database ? 'Оставьте пустым, чтобы не менять' : 'Введите пароль'}
+ />
+
+
+ {database && (
+
Оставьте пустым, чтобы не менять пароль
+ )}
+
+
+
+
+
+
+
+
+ >
+ )}