package org.rakam.postgresql.plugin.user;
import com.google.inject.Binder;
import com.google.inject.name.Names;
import org.rakam.analysis.JDBCPoolDataSource;
import org.rakam.config.JDBCConfig;
import org.rakam.plugin.RakamModule;
import org.rakam.plugin.user.mailbox.UserMailboxStorage;
import org.rakam.postgresql.plugin.user.mailbox.PostgresqlUserMailboxStorage;
import static org.rakam.postgresql.PostgresqlModule.getAsyncClientModule;
//@AutoService(RakamModule.class)
//@ConditionalModule(config="plugin.user.mailbox.adapter", value="postgresql")
public class PostgresqlUserMailboxModule extends RakamModule {
@Override
protected void setup(Binder binder) {
JDBCConfig config = buildConfigObject(JDBCConfig.class, "store.adapter.postgresql");
binder.bind(JDBCPoolDataSource.class)
.annotatedWith(Names.named("store.adapter.postgresql"))
.toInstance(JDBCPoolDataSource.getOrCreateDataSource(config));
binder.install(getAsyncClientModule(config));
binder.bind(UserMailboxStorage.class).to(PostgresqlUserMailboxStorage.class);
}
@Override
public String name() {
return "Postgresql User mailbox module";
}
@Override
public String description() {
return "Real-time mailbox module that allows your users to get mail notifications in real-time. Can also be used as chat application.";
}
}