package bo.gotthardt.todolist.application;
import bo.gotthardt.ebean.ExtendedDataSourceFactory;
import bo.gotthardt.ebean.HasDatabaseConfiguration;
import bo.gotthardt.email.EmailServiceConfiguration;
import bo.gotthardt.email.HasEmailServiceConfiguration;
import bo.gotthardt.email.sendgrid.HasSendGridConfiguration;
import bo.gotthardt.email.sendgrid.SendGridConfiguration;
import bo.gotthardt.jsclient.HasJsClientConfiguration;
import bo.gotthardt.queue.HasWorkerConfigurations;
import bo.gotthardt.queue.WorkerConfiguration;
import bo.gotthardt.queue.rabbitmq.HasRabbitMQConfiguration;
import bo.gotthardt.queue.rabbitmq.RabbitMQConfiguration;
import bo.gotthardt.schedule.HasScheduleConfigurations;
import bo.gotthardt.schedule.ScheduleConfiguration;
import bo.gotthardt.schedule.quartz.HasQuartzConfiguration;
import bo.gotthardt.schedule.quartz.QuartzConfiguration;
import bo.gotthardt.todo.TodoClientConfiguration;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.dropwizard.Configuration;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
/**
* @author Bo Gotthardt
*/
@Getter
public class TodoListConfiguration extends Configuration implements HasDatabaseConfiguration, HasEmailServiceConfiguration,
HasSendGridConfiguration, HasRabbitMQConfiguration, HasWorkerConfigurations, HasQuartzConfiguration,
HasScheduleConfigurations, HasJsClientConfiguration {
@JsonProperty("database")
private ExtendedDataSourceFactory databaseConfig = new ExtendedDataSourceFactory();
private EmailServiceConfiguration email = new EmailServiceConfiguration();
private SendGridConfiguration sendGrid;
private RabbitMQConfiguration rabbitMq = new RabbitMQConfiguration();
private List<WorkerConfiguration> workers = new ArrayList<>();
private QuartzConfiguration quartz = new QuartzConfiguration();
private List<ScheduleConfiguration> schedules = new ArrayList<>();
private TodoClientConfiguration jsClient = new TodoClientConfiguration();
}