diff --git a/backend/pom.xml b/backend/pom.xml
index 6f9485a..c5da69f 100755
--- a/backend/pom.xml
+++ b/backend/pom.xml
@@ -43,6 +43,13 @@
org.springframework.security
spring-security-crypto
+
+
+
+ com.h2database
+ h2
+ runtime
+
diff --git a/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java b/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java
index c7674b6..c061f48 100644
--- a/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java
+++ b/backend/src/main/java/com/magistr/app/config/tenant/TenantDataSourceConfig.java
@@ -2,6 +2,7 @@ package com.magistr.app.config.tenant;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.zaxxer.hikari.HikariDataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
@@ -24,6 +25,9 @@ import java.util.*;
/**
* Конфигурация мультитенантного DataSource.
* Загружает тенанты из JSON-файла и регистрирует TenantInterceptor.
+ *
+ * Если нет ни одного настроенного тенанта — создаёт H2 in-memory БД
+ * как заглушку, чтобы Spring JPA мог инициализироваться.
*/
@Configuration
public class TenantDataSourceConfig implements WebMvcConfigurer {
@@ -68,10 +72,18 @@ public class TenantDataSourceConfig implements WebMvcConfigurer {
}
}
+ // Если всё ещё нет ни одного тенанта — H2 in-memory заглушка
if (routingDataSource.getTenantConfigs().isEmpty()) {
log.warn("=== НЕТ НАСТРОЕННЫХ ТЕНАНТОВ ===");
- log.warn("Backend запустится, но API не будет работать без подключения к БД.");
- log.warn("Добавьте тенант через POST /api/database/tenants или настройте tenants.json");
+ log.warn("Создаём H2 in-memory заглушку для запуска приложения.");
+ log.warn("Добавьте тенант через POST /api/database/tenants");
+
+ TenantConfig h2Fallback = new TenantConfig(
+ "H2 Placeholder", "default",
+ "jdbc:h2:mem:placeholder;DB_CLOSE_DELAY=-1",
+ "sa", ""
+ );
+ routingDataSource.addTenant(h2Fallback);
}
return routingDataSource;
@@ -91,7 +103,6 @@ public class TenantDataSourceConfig implements WebMvcConfigurer {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(true);
- vendorAdapter.setDatabasePlatform("org.hibernate.dialect.PostgreSQLDialect");
em.setJpaVendorAdapter(vendorAdapter);
Map props = new HashMap<>();