package com.nisum.task.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.config.AbstractReactiveMongoConfiguration;
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;

import com.mongodb.reactivestreams.client.MongoClient;
import com.mongodb.reactivestreams.client.MongoClients;

@Configuration
@EnableMongoRepositories(basePackages = "com.nisum.task.repository")
public class MongoDbConfig extends AbstractReactiveMongoConfiguration {

	@Value("${database.name}")
	private String databaseName;

	@Value("${database.host}")
	private String databaseHost;

	@Override
	protected String getDatabaseName() {
		return databaseName;
	}

	@Override
	public MongoClient reactiveMongoClient() {
		String name = databaseHost;
		return MongoClients.create(name);
	}

	@Bean
	public ReactiveMongoTemplate reactiveMongoTemplate() {
		return new ReactiveMongoTemplate(reactiveMongoClient(), getDatabaseName());
	}

}