local kube = import "../../kube/hscloud.libsonnet";
local postgres = import '../../kube/postgres_v.libsonnet';

{
  local top = self,
  local cfg = top.cfg,

  cfg:: {
    name: 'inventory',
    namespace: 'inventory',
    domain: 'inventory.hackerspace.pl',

    image: 'registry.k0.hswaw.net/palid/spejstore:1694280421',
    db: {
      name: 'inventory',
      username: 'inventory',
    },
    oauthClientId: '82fffb65-0bbd-4d18-becd-0ce0b31373cf',
    storageClassName: 'waw-hdd-redundant-3',

    mediaPath: '/var/www/media',
  },

  secrets:: {
    postgres: { secretKeyRef: { name: cfg.name, key: 'postgres_password' } },
    oauth: { secretKeyRef: { name: cfg.name, key: 'oauth_secret' } },
  },

  ns: kube.Namespace(cfg.namespace),
  deployment: top.ns.Contain(kube.Deployment(cfg.name)) {
    spec+: {
      template+: {
        spec+: {
          volumes_: {
            media: kube.PersistentVolumeClaimVolume(top.media),
          },
          containers_: {
            default: kube.Container('default') {
              image: cfg.image,
              ports_: {
                web: { containerPort: 8000 },
              },
              env_: {
                SPEJSTORE_ENV: 'prod',
                SPEJSTORE_DB_NAME: cfg.db.name,
                SPEJSTORE_DB_USER: cfg.db.username,
                SPEJSTORE_DB_PASSWORD: top.secrets.postgres,
                SPEJSTORE_DB_HOST: top.psql.svc.host,
                SPEJSTORE_DB_PORT: top.psql.svc.port,
                SPEJSTORE_ALLOWED_HOSTS: cfg.domain,
                SPEJSTORE_CLIENT_ID: cfg.oauthClientId,
                SPEJSTORE_SECRET: top.secrets.oauth,
                SPEJSTORE_MEDIA_ROOT: cfg.mediaPath,
                SPEJSTORE_REQUIRE_AUTH: 'true',
                SPEJSTORE_LAN_ALLOWED_ADDRESS_SPACE: '185.236.240.5',
              },
              volumeMounts_: {
                media: { mountPath: cfg.mediaPath },
              },
            },
          },
        },
      },
    },
  },

  media: top.ns.Contain(kube.PersistentVolumeClaim(cfg.name)) {
    storage:: '20Gi',
    storageClass:: cfg.storageClassName,
  },

  psql: postgres {
    cfg+: {
      namespace: cfg.namespace,
      appName: cfg.name,
      storageClassName: cfg.storageClassName,
      version: '15.4',

      database: cfg.db.name,
      username: cfg.db.username,
      password: top.secrets.postgres,
    },
    bouncer: {},
  },

  service: top.ns.Contain(kube.Service(cfg.name)) {
    target:: top.deployment,
  },

  ingress: top.ns.Contain(kube.SimpleIngress(cfg.name)) {
    hosts:: [cfg.domain],
    target_service:: top.service,
  },
}
