diff --git a/api/kubernetes/worker-deployment.yaml b/api/kubernetes/worker-deployment.yaml index 90e3eab..98f8ac0 100644 --- a/api/kubernetes/worker-deployment.yaml +++ b/api/kubernetes/worker-deployment.yaml @@ -20,6 +20,11 @@ spec: env: - name: MANAGER_SOCKET_URL value: "http://optima-api.optima.svc.cluster.local:8671" + - name: API_DATABASE_URL + valueFrom: + secretKeyRef: + name: api-env-secret + key: DATABASE_URL envFrom: - secretRef: name: api-env-secret diff --git a/dalpuri/src/sync.ts b/dalpuri/src/sync.ts index 441d734..1695dce 100644 --- a/dalpuri/src/sync.ts +++ b/dalpuri/src/sync.ts @@ -107,6 +107,20 @@ const resolveApiDatabaseUrl = (): string => { if (process.env.OPTIMA_API_DATABASE_URL) return process.env.OPTIMA_API_DATABASE_URL; + // Worker/runtime fallback: + // In Kubernetes we often provide CW via CW_DATABASE_URL and API Postgres via + // DATABASE_URL. Only use DATABASE_URL as API when we can safely infer that. + if (process.env.CW_DATABASE_URL && process.env.DATABASE_URL) { + return process.env.DATABASE_URL; + } + + if ( + process.env.DATABASE_URL && + /^(postgres|postgresql):\/\//i.test(process.env.DATABASE_URL) + ) { + return process.env.DATABASE_URL; + } + const candidates = [ resolve(import.meta.dir, "../../api/.env"), resolve(process.cwd(), "../api/.env"),