---
- name: "include docker-central-database"
  include_role: 
    name: docker-central-database

- name: "create {{ nextcloud_host_config_additives_directory }}"
  file:
    path: "{{ nextcloud_host_config_additives_directory }}"
    state: directory
    mode: 0755

- name: "Create config files at {{ nextcloud_host_config_additives_directory }}"
  template:
    src:    "{{ item }}"
    dest:   "{{ nextcloud_host_config_additives_directory }}/{{ item | basename | regex_replace('\\.j2$', '') }}"
    owner:  "{{nextcloud_docker_user_id}}"
    group:  "{{nextcloud_docker_user_id}}"
  loop:     "{{ lookup('fileglob', role_path ~ '/templates/config/*.j2', wantlist=True) }}"
  # Not all type of changes take instantly place. Due to this reason a rebuild is required.
  notify: docker compose project setup

- name: "include role for {{application_id}} to recieve certs & do modification routines"
  include_role:
    name: nginx-https-get-cert-modify-all

- name: create nextcloud nginx proxy configuration file
  template: 
    src:  "nginx/host.conf.j2" 
    dest: "{{nginx.directories.http.servers}}{{domains[application_id]}}.conf"
  notify: restart nginx

- name: create internal nextcloud nginx configuration
  template: 
    src:  "nginx/docker.conf.j2" 
    dest: "{{docker_compose.directories.volumes}}nginx.conf"
  notify: restart nextcloud nginx service

- name: "copy docker-compose.yml and env file"
  include_tasks: copy-docker-compose-and-env.yml

- name: Flush all handlers immediately so that occ can be used
  meta: flush_handlers

- name: Merge all files in cymais directory (container)
  block:
    - name: Add dynamic config merging from Jinja template
      template:
        src: include.php.j2
        dest: "{{nextcloud_host_include_instructions_file}}"
      notify: docker compose restart

    - name: Copy include instructions to the container
      command: >
        docker cp {{ nextcloud_host_include_instructions_file }} {{ applications.nextcloud.container.application }}:{{nextcloud_docker_include_instructions_file}}

    - name: Append generated config to config.php only if not present
      command: >
        docker exec -u {{nextcloud_docker_user}} {{ applications.nextcloud.container.application }} sh -c "
          grep -q '{{ nextcloud_docker_config_additives_directory }}' {{ nextcloud_docker_config_file }} || 
          cat {{nextcloud_docker_include_instructions_file}} >> {{ nextcloud_docker_config_file }}"
      notify: docker compose restart

- name: Setup Nextcloud Plugins
  include_tasks: plugin.yml
  loop: "{{applications[application_id].plugins | dict2items }}"
  loop_control:
    loop_var: plugin_item
  vars:
    plugin_key:   "{{ plugin_item.key }}"
    plugin_value: "{{ plugin_item.value }}"

- name: Load system configuration
  include_tasks: system.yml

- name: Add missing database indices in Nextcloud
  command: >
    {{nextcloud_docker_exec_occ}} db:add-missing-indices
  register: db_indices_result
  changed_when: >
    'Adding additional' in db_indices_result.stdout or 
    'Removing' in db_indices_result.stdout or 
    'updated successfully' in db_indices_result.stdout
  failed_when: db_indices_result.rc != 0