I'm using Vert.x Jooq <https://github.com/jklingsporn/vertx-jooq> in
Kotlin. I'm wondering if there's a way to use Vert.x Guice
<https://github.com/ef-labs/vertx-guice> to avoid passing the parameters
jooqConfig and dbClient
UserDao(jooqConfig, dbClient)
and instead simplify it to
UserDao()
This is the text Vert.x handler:
private fun jooqRxAsyncHandler(context: RoutingContext) {
val jooqConfig: Configuration =
DefaultConfiguration().set(SQLDialect.POSTGRES)
val dbCredentials = JsonObject()
.put("host", "localhost")
.put("username", "username")
.put("password", "password")
.put("database", "dbname")
dbClient = PostgreSQLClient.createNonShared(vertx,
com.datadeploytool.database.dbCredentials)
val dao = UserDao(jooqConfig, dbClient)
println("getting. client: $dbClient")
dao.deleteByCondition(USER.EMAIL.eq("[email protected]")).ignoreElement()
.andThen(
dao.insert(User("[email protected]",
"[email protected]",
Timestamp(System.currentTimeMillis()))
).ignoreElement()
.andThen(
dao.findOneByCondition(USER.EMAIL.eq("[email protected]"))
)
.doOnEvent { something, x ->
if (x == null) {
context.response().putHeader("content-type",
"text/html").end("JOOQ test $something")
} else {
System.err.println("Something failed badly: " + x.message)
context.response().putHeader("content-type",
"text/html").end("JOOQ error")
}
}
.subscribe()
println("done")}
Here is the generated DAO class:
/*
* This file is generated by jOOQ.
*/
package jooq.generated.tables.daos;
import io.github.jklingsporn.vertx.jooq.shared.async.AbstractAsyncVertxDAO;
import java.sql.Timestamp;
import java.util.List;
import javax.annotation.Generated;
import jooq.generated.tables.User;
import jooq.generated.tables.records.UserRecord;
import org.jooq.Configuration;
import io.reactivex.Single;
import java.util.Optional;
import io.github.jklingsporn.vertx.jooq.rx.async.AsyncRXQueryExecutor;
/**
* This class is generated by jOOQ.
*/
@Generated(
value = {
"http://www.jooq.org",
"jOOQ version:3.11.9"
},
comments = "This class is generated by jOOQ"
)
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
@javax.inject.Singleton
public class UserDao extends AbstractAsyncVertxDAO<UserRecord,
jooq.generated.tables.pojos.User, String,
Single<List<jooq.generated.tables.pojos.User>>,
Single<Optional<jooq.generated.tables.pojos.User>>, Single<Integer>,
Single<String>> implements
io.github.jklingsporn.vertx.jooq.rx.VertxDAO<UserRecord,jooq.generated.tables.pojos.User,String>
{
@javax.inject.Inject
/**
* @param configuration Used for rendering, so only SQLDialect must be set
and must be one of the MYSQL types or POSTGRES.
* @param delegate A configured AsyncSQLClient that is used for query
execution
*/
public UserDao(Configuration
configuration,io.vertx.reactivex.ext.asyncsql.AsyncSQLClient delegate) {
super(User.USER, jooq.generated.tables.pojos.User.class, new
AsyncRXQueryExecutor<UserRecord,jooq.generated.tables.pojos.User,String>(configuration,delegate,jooq.generated.tables.pojos.User::new,
User.USER));
}
/**
* {@inheritDoc}
*/
@Override
protected String getId(jooq.generated.tables.pojos.User object) {
return object.getUserKey();
}
/**
* Find records that have <code>user_email IN (values)</code> asynchronously
*/
public Single<List<jooq.generated.tables.pojos.User>>
findManyByUserEmail(List<String> values) {
return findManyByCondition(User.USER.USER_EMAIL.in(values));
}
/**
* Find records that have <code>user_change_date IN (values)</code>
asynchronously
*/
public Single<List<jooq.generated.tables.pojos.User>>
findManyByUserChangeDate(List<Timestamp> values) {
return findManyByCondition(User.USER.USER_CHANGE_DATE.in(values));
}
@Override
public
AsyncRXQueryExecutor<UserRecord,jooq.generated.tables.pojos.User,String>
queryExecutor(){
return
(AsyncRXQueryExecutor<UserRecord,jooq.generated.tables.pojos.User,String>)
super.queryExecutor();
}
}
--
You received this message because you are subscribed to the Google Groups "jOOQ
User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jooq-user/5ac409fa-a4a9-4cc5-9cba-db2fd20e8321%40googlegroups.com.