neo4j_conf_template = "neo4j_#{node['neo4j']['version'].to_i}.conf.erb"

template node['neo4j']['config']['file_path'] do
  source neo4j_conf_template
  owner node['neo4j']['user']
  group node['neo4j']['user']
  mode '0640'
  sensitive true
  notifies :run, 'ruby_block[restart_neo4j]', :delayed
end

# APOC plugin configuration file (4.0+)
if node['neo4j']['version'].to_i > 3
  template node['neo4j']['config']['apoc_conf_file_path'] do
    source 'apoc_4.conf.erb'
    owner node['neo4j']['user']
    group node['neo4j']['user']
    mode '0640'
    sensitive true
  end
end

# Neo4J streams configuration
template node['neo4j']['config']['streams_file_path'] do
  source 'streams.conf.erb'
  owner node['neo4j']['user']
  group node['neo4j']['user']
  mode '0640'
  sensitive true
end

# Add systemd drop-in file to control only specific parameters. Chef resource does not support this, so create correct structure.
directory '/etc/systemd/system/neo4j.service.d' do
  action :create
end

# Reload systemd units if drop-in is added/changed.
execute 'reload_neo4j_service' do
  command '/bin/systemctl daemon-reload'
  timeout 10
  action :nothing
end

# Add systemd drop-in file to control only specific parameters. Chef resource does not support this, so create correct structure.
directory '/etc/systemd/system/neo4j.service.d' do
  action :create
end

# Reload systemd units if drop-in is added/changed.
execute 'reload_neo4j_service' do
  command '/bin/systemctl daemon-reload'
  timeout 10
  action :nothing
end

template '/etc/systemd/system/neo4j.service.d/neo4j.conf' do
  source 'neo4j_systemd_dropin.conf.erb'
  mode '0640'
  notifies :run, 'execute[reload_neo4j_service]', :immediately
  notifies :run, 'ruby_block[restart_neo4j]', :delayed
end

if node['neo4j']['version'].to_i > 4

  cookbook_file node['neo4j']['config']['server.logs.config'] do
    source 'server-logs.xml'
    owner node['neo4j']['user']
    group node['neo4j']['user']
    mode '0644'
  end

  cookbook_file node['neo4j']['config']['server.logs.user.config'] do
    source 'user-logs.xml'
    owner node['neo4j']['user']
    group node['neo4j']['user']
    mode '0644'
  end
end
