diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index e69a443..584dbf2 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -25,9 +25,9 @@ jobs: - name: Build and push postgres image uses: docker/build-push-action@v5 - if: | - contains(github.event.commits[0].modified, 'infra/postgres-pg-cron') || - contains(github.event.commits[0].added, 'infra/postgres-pg-cron') +# if: | +# contains(github.event.commits[0].modified, 'infra/postgres') || +# contains(github.event.commits[0].added, 'infra/postgres') with: context: . file: infra/postgres/Dockerfile diff --git a/backend/migrations/000001-create-pg-cron-extension.down.sql b/backend/migrations/000001-create-pg-cron-extension.down.sql new file mode 100644 index 0000000..8395816 --- /dev/null +++ b/backend/migrations/000001-create-pg-cron-extension.down.sql @@ -0,0 +1 @@ +DROP EXTENSION pg_cron; diff --git a/infra/postgres/init/001-create-pg-cron-extension.sql b/backend/migrations/000001-create-pg-cron-extension.up.sql similarity index 100% rename from infra/postgres/init/001-create-pg-cron-extension.sql rename to backend/migrations/000001-create-pg-cron-extension.up.sql diff --git a/backend/migrations/000001_create_users.down.sql b/backend/migrations/000002_create_users.down.sql similarity index 100% rename from backend/migrations/000001_create_users.down.sql rename to backend/migrations/000002_create_users.down.sql diff --git a/backend/migrations/000001_create_users.up.sql b/backend/migrations/000002_create_users.up.sql similarity index 100% rename from backend/migrations/000001_create_users.up.sql rename to backend/migrations/000002_create_users.up.sql diff --git a/backend/migrations/000002_create_families.down.sql b/backend/migrations/000003_create_families.down.sql similarity index 100% rename from backend/migrations/000002_create_families.down.sql rename to backend/migrations/000003_create_families.down.sql diff --git a/backend/migrations/000002_create_families.up.sql b/backend/migrations/000003_create_families.up.sql similarity index 100% rename from backend/migrations/000002_create_families.up.sql rename to backend/migrations/000003_create_families.up.sql diff --git a/backend/migrations/000003_create_family_members.down.sql b/backend/migrations/000004_create_family_members.down.sql similarity index 100% rename from backend/migrations/000003_create_family_members.down.sql rename to backend/migrations/000004_create_family_members.down.sql diff --git a/backend/migrations/000003_create_family_members.up.sql b/backend/migrations/000004_create_family_members.up.sql similarity index 100% rename from backend/migrations/000003_create_family_members.up.sql rename to backend/migrations/000004_create_family_members.up.sql diff --git a/backend/migrations/000004_create_otp.down.sql b/backend/migrations/000005_create_otp.down.sql similarity index 100% rename from backend/migrations/000004_create_otp.down.sql rename to backend/migrations/000005_create_otp.down.sql diff --git a/backend/migrations/000004_create_otp.up.sql b/backend/migrations/000005_create_otp.up.sql similarity index 100% rename from backend/migrations/000004_create_otp.up.sql rename to backend/migrations/000005_create_otp.up.sql diff --git a/backend/migrations/000005_create_receipts.down.sql b/backend/migrations/000006_create_receipts.down.sql similarity index 100% rename from backend/migrations/000005_create_receipts.down.sql rename to backend/migrations/000006_create_receipts.down.sql diff --git a/backend/migrations/000005_create_receipts.up.sql b/backend/migrations/000006_create_receipts.up.sql similarity index 100% rename from backend/migrations/000005_create_receipts.up.sql rename to backend/migrations/000006_create_receipts.up.sql diff --git a/backend/migrations/000006_create_positions.down.sql b/backend/migrations/000007_create_positions.down.sql similarity index 100% rename from backend/migrations/000006_create_positions.down.sql rename to backend/migrations/000007_create_positions.down.sql diff --git a/backend/migrations/000006_create_positions.up.sql b/backend/migrations/000007_create_positions.up.sql similarity index 100% rename from backend/migrations/000006_create_positions.up.sql rename to backend/migrations/000007_create_positions.up.sql diff --git a/backend/migrations/000007_create_activity_logs.down.sql b/backend/migrations/000008_create_activity_logs.down.sql similarity index 100% rename from backend/migrations/000007_create_activity_logs.down.sql rename to backend/migrations/000008_create_activity_logs.down.sql diff --git a/backend/migrations/000007_create_activity_logs.up.sql b/backend/migrations/000008_create_activity_logs.up.sql similarity index 100% rename from backend/migrations/000007_create_activity_logs.up.sql rename to backend/migrations/000008_create_activity_logs.up.sql diff --git a/backend/src/config/config.go b/backend/src/config/config.go index 6379e9a..2d60ad3 100644 --- a/backend/src/config/config.go +++ b/backend/src/config/config.go @@ -2,6 +2,7 @@ package config import ( "errors" + "fmt" "os" "strings" @@ -33,7 +34,6 @@ func Load() (Config, error) { mode := os.Getenv("RUN_MODE") debugMode := os.Getenv("DEBUG_MODE") == "true" botToken := os.Getenv("BOT_TOKEN") - dbConnectionString := os.Getenv("DB_PATH") ocrTokenPath := os.Getenv("GOOGLE_APPLICATION_CREDENTIALS") apiPort := os.Getenv("API_PORT") apiHost := os.Getenv("API_HOST") @@ -42,6 +42,7 @@ func Load() (Config, error) { openAPIEndpoint := os.Getenv("OPEN_API_ENDPOINT") runMode, err := ParseRunMode(mode) + dbConnectionString := buildConnectionString() if err != nil { warnings = append(warnings, err.Error()) } @@ -61,9 +62,6 @@ func Load() (Config, error) { if apiSecret == "" { warnings = append(warnings, "Missing required environment variable: API_SECRET") } - if dbConnectionString == "" { - dbConnectionString = "sqlite://data/app.db" - } if apiHost == "" { apiHost = "localhost" } @@ -92,3 +90,30 @@ func Load() (Config, error) { TelegramApi: "https://api.telegram.org", }, nil } + +func buildConnectionString() string { + // если задана готовая строка — используем её (удобно для локальной разработки через .env) + if dsn := os.Getenv("DB_PATH"); dsn != "" { + return dsn + } + + // собираем из отдельных переменных (для Kubernetes) + host := os.Getenv("DB_HOST") + port := os.Getenv("DB_PORT") + user := os.Getenv("DB_USER") + password := os.Getenv("DB_PASSWORD") + dbName := os.Getenv("DB_NAME") + + if host == "" || user == "" || password == "" || dbName == "" { + return "" + } + + if port == "" { + port = "5432" + } + + return fmt.Sprintf( + "postgres://%s:%s@%s:%s/%s?sslmode=disable", + user, password, host, port, dbName, + ) +} diff --git a/infra/k8s/configmap.yaml b/infra/k8s/configmap.yaml index 4c2dad8..02e5f3d 100644 --- a/infra/k8s/configmap.yaml +++ b/infra/k8s/configmap.yaml @@ -5,7 +5,7 @@ metadata: namespace: family-hub data: DB_HOST: postgres - DB_PORT: "6432" + DB_PORT: "5432" DB_NAME: familyHubDB DB_USER: familyUser API_PORT: "8000" diff --git a/infra/postgres/Dockerfile b/infra/postgres/Dockerfile index 1ebcdc4..9dbcb48 100644 --- a/infra/postgres/Dockerfile +++ b/infra/postgres/Dockerfile @@ -2,4 +2,4 @@ FROM postgres:16 RUN apt-get update \ && apt-get install -y --no-install-recommends postgresql-16-cron \ - && rm -rf /var/lib/apt/lists/* + && rm -rf /var/lib/apt/lists/* \ No newline at end of file