{{- if .Values.electric.deploy }}
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "trigger-v4.fullname" . }}-electric
  labels:
    {{- $component := "electric" }}
    {{- include "trigger-v4.componentLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 4 }}
spec:
  replicas: 1
  selector:
    matchLabels:
      {{- include "trigger-v4.componentSelectorLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 6 }}
  template:
    metadata:
      {{- with .Values.electric.podAnnotations }}
      annotations:
        {{- toYaml . | nindent 8 }}
      {{- end }}
      labels:
        {{- include "trigger-v4.componentSelectorLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 8 }}
    spec:
      {{- with .Values.electric.podSecurityContext }}
      securityContext:
        {{- toYaml . | nindent 8 }}
      {{- end }}
      containers:
        - name: electric
          {{- with .Values.electric.securityContext }}
          securityContext:
            {{- toYaml . | nindent 12 }}
          {{- end }}
          image: "{{ .Values.electric.image.registry }}/{{ .Values.electric.image.repository }}:{{ .Values.electric.image.tag }}"
          imagePullPolicy: {{ .Values.electric.image.pullPolicy }}
          ports:
            - name: http
              containerPort: {{ .Values.electric.service.targetPort }}
              protocol: TCP
          env:
            {{- if include "trigger-v4.postgres.useSecretUrl" . }}
            - name: DATABASE_URL
              valueFrom:
                secretKeyRef:
                  name: {{ include "trigger-v4.postgres.external.secretName" . }}
                  key: {{ include "trigger-v4.postgres.external.databaseUrlKey" . }}
            {{- else }}
            - name: DATABASE_URL
              value: {{ include "trigger-v4.postgres.connectionString" . | quote }}
            {{- end }}
            - name: ELECTRIC_INSECURE
              value: {{ .Values.electric.config.insecure | quote }}
            - name: ELECTRIC_USAGE_REPORTING
              value: {{ .Values.electric.config.usageReporting | quote }}
            {{- with .Values.electric.extraEnvVars }}
            {{- toYaml . | nindent 12 }}
            {{- end }}
          {{- if .Values.electric.livenessProbe.enabled }}
          livenessProbe:
            httpGet:
              path: /v1/health
              port: http
            initialDelaySeconds: {{ .Values.electric.livenessProbe.initialDelaySeconds }}
            periodSeconds: {{ .Values.electric.livenessProbe.periodSeconds }}
            timeoutSeconds: {{ .Values.electric.livenessProbe.timeoutSeconds }}
            failureThreshold: {{ .Values.electric.livenessProbe.failureThreshold }}
            successThreshold: {{ .Values.electric.livenessProbe.successThreshold }}
          {{- end }}
          {{- if .Values.electric.readinessProbe.enabled }}
          readinessProbe:
            httpGet:
              path: /v1/health
              port: http
            initialDelaySeconds: {{ .Values.electric.readinessProbe.initialDelaySeconds }}
            periodSeconds: {{ .Values.electric.readinessProbe.periodSeconds }}
            timeoutSeconds: {{ .Values.electric.readinessProbe.timeoutSeconds }}
            failureThreshold: {{ .Values.electric.readinessProbe.failureThreshold }}
            successThreshold: {{ .Values.electric.readinessProbe.successThreshold }}
          {{- end }}
          {{- if .Values.electric.startupProbe.enabled }}
          startupProbe:
            httpGet:
              path: /v1/health
              port: http
            initialDelaySeconds: {{ .Values.electric.startupProbe.initialDelaySeconds }}
            periodSeconds: {{ .Values.electric.startupProbe.periodSeconds }}
            timeoutSeconds: {{ .Values.electric.startupProbe.timeoutSeconds }}
            failureThreshold: {{ .Values.electric.startupProbe.failureThreshold }}
            successThreshold: {{ .Values.electric.startupProbe.successThreshold }}
          {{- end }}
          resources:
            {{- toYaml .Values.electric.resources | nindent 12 }}
---
apiVersion: v1
kind: Service
metadata:
  name: {{ include "trigger-v4.fullname" . }}-electric
  labels:
    {{- $component := "electric" }}
    {{- include "trigger-v4.componentLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 4 }}
spec:
  type: {{ .Values.electric.service.type }}
  ports:
    - port: {{ .Values.electric.service.port }}
      targetPort: http
      protocol: TCP
      name: http
  selector:
    {{- include "trigger-v4.componentSelectorLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 4 }}
{{- end }}