{{- if .Values.databases.pgsql.enabled -}}
---
apiVersion: v1
kind: Service
metadata:
  name: opengauss-db
  namespace: {{ .Release.Namespace }}
spec:
  type: {{ default "ClusterIP" .Values.databases.pgsql.service.type }}
  selector:
    app: pgsql
  ports:
    - port: 5432
      targetPort: 5432
      nodePort: {{ default nil .Values.databases.pgsql.service.nodePort }}

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: pgsql-deploy
  namespace: {{ .Release.Namespace }}
  labels:
    app: pgsql
spec:
  replicas: {{ default 1 .Values.globals.replicaCount }}
  selector:
    matchLabels:
      app: pgsql
  template:
    metadata:
      annotations:
        checksum/config: {{ include (print $.Template.BasePath "/pgsql/pgsql-config.yaml") . | sha256sum }}
      labels:
        app: pgsql
    spec:
      automountServiceAccountToken: false
      containers:
        - name: pgsql
          image: {{ .Values.databases.pgsql.image | default (printf "%s/neocopilot/pgsql-empty:pg16-%s" (.Values.globals.imageRegistry | default "hub.oepkgs.net") (.Values.globals.arch | default "x86")) }}
          imagePullPolicy: {{ default "IfNotPresent" .Values.globals.imagePullPolicy }}
          ports:
            - containerPort: 5432
              protocol: TCP
          livenessProbe:
            exec:
              command:
                - pg_isready
                - -d postgres -U postgres
            failureThreshold: 5
            initialDelaySeconds: 60
            periodSeconds: 90
          env:
            - name: TZ
              value: "Asia/Shanghai"
            - name: POSTGRES_DB
              value: "postgres"
            - name: POSTGRES_USER
              value: "postgres"
            - name: POSTGRES_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: euler-copilot-database
                  key: gauss-password
          volumeMounts:
            - mountPath: /var/lib/postgresql/data
              name: pgsql-data
            - mountPath: /docker-entrypoint-initdb.d/init.sql
              name: pgsql-init
              subPath: init.sql
          resources:
            requests:
              cpu: 0.25
              memory: 512Mi
            limits:
                {{ toYaml .Values.databases.pgsql.resourceLimits | nindent 14 }}
      volumes:
        - name: pgsql-data
          persistentVolumeClaim:
            claimName: pgsql-storage
        - name: pgsql-init
          configMap:
            name: pgsql-config
{{- end -}}