# Use a custom module until TimescaleDB is available in EPEL
# https://bugzilla.redhat.com/show_bug.cgi?id=1987790
- name: Install the timescaledb repo
  copy:
    dest: /etc/yum.repos.d/timescaledb.repo
    content: |
      [timescaledb]
      name = Copr modules repo for timescaledb
      baseurl = https://download.copr.fedorainfracloud.org/results/abompard/timescaledb/modules/epel-8-$basearch+timescaledb-master-20210730083523/latest/$basearch
      gpgcheck=0
      gpgkey=https://download.copr.fedorainfracloud.org/results/abompard/timescaledb/pubkey.gpg
      repo_gpgcheck=0
      enabled = 1
  tags:
  - datanommer
  - postgresql
  - timescaledb
  when: ansible_distribution_major_version|int >= 8 and ansible_distribution == 'RedHat'
#
- name: Install the timescaledb module
  copy:
    dest: /etc/dnf/modules.d/timescaledb.module
    content: |
      [timescaledb]
      name=timescaledb
      stream=master
      profiles=
      state=enabled
  tags:
  - datanommer
  - postgresql
  - timescaledb
  when: ansible_distribution_major_version|int >= 8 and ansible_distribution == 'RedHat'

- name: Install timescaledb
  dnf:
    name:
      - timescaledb
    state: present
  tags:
  - datanommer
  - postgresql
  - timescaledb

- name: Add timescaledb to postgresql config
  lineinfile:
    path: /var/lib/pgsql/data/postgresql.conf
    regexp: ^shared_preload_libraries =
    line: "shared_preload_libraries = 'timescaledb'"
  notify:
  - restart postgresql
  tags:
  - datanommer
  - postgresql
  - timescaledb


- block:

    # Users
    - name: create the main DB user
      postgresql_user:
        name: "{{ datanommerDBUser }}"
        password: "{{ (env == 'production')|ternary(datanommerDBPassword, datanommer_stg_db_password) }}"

    - name: create the RO DB user
      postgresql_user:
        name: datanommer_ro
        password: "{{ datanommer_ro_password }}"

    # Databases
    - name: create the datanommer database
      postgresql_db:
        name: datanommer2
        owner: "{{ datanommerDBUser }}"
        encoding: UTF-8

    - name: grant datanommer_ro read only access to datanommer2
      postgresql_privs:
        database: datanommer2
        privs: SELECT
        objs: ALL_IN_SCHEMA
        roles: datanommer_ro

    # Enable timescaledb
    - name: enable timescaledb
      postgresql_ext:
        name: timescaledb
        db: datanommer2

  become: true
  become_user: postgres
  tags:
  - datanommer
  - postgresql
