Installation automation - License key approach
This commit is contained in:
@@ -3,7 +3,9 @@ package com.cygnus.cloud.database;
|
||||
import io.vertx.sqlclient.Pool;
|
||||
import io.vertx.sqlclient.Row;
|
||||
import io.vertx.sqlclient.RowSet;
|
||||
import io.vertx.sqlclient.SqlConnection;
|
||||
import io.vertx.sqlclient.Tuple;
|
||||
import java.util.function.Function;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import reactor.core.publisher.Mono;
|
||||
@@ -29,4 +31,37 @@ public class ReactiveDatabaseClient {
|
||||
return Mono.fromCompletionStage(
|
||||
() -> pool.preparedQuery(sql).execute(parameters).toCompletionStage());
|
||||
}
|
||||
|
||||
public Mono<Integer> preparedUpdate(String sql, Tuple parameters) {
|
||||
return preparedQuery(sql, parameters).map(RowSet::rowCount);
|
||||
}
|
||||
|
||||
public <T> Mono<T> inTransaction(Function<SqlConnection, Mono<T>> work) {
|
||||
return Mono.usingWhen(
|
||||
Mono.fromCompletionStage(() -> pool.getConnection().toCompletionStage()),
|
||||
connection -> Mono.fromCompletionStage(
|
||||
() -> connection.begin().toCompletionStage())
|
||||
.flatMap(transaction -> work.apply(connection)
|
||||
.flatMap(result -> Mono.fromCompletionStage(
|
||||
() -> transaction.commit().toCompletionStage())
|
||||
.thenReturn(result))
|
||||
.onErrorResume(error -> Mono.fromCompletionStage(
|
||||
() -> transaction.rollback().toCompletionStage())
|
||||
.onErrorResume(ignored -> Mono.empty())
|
||||
.then(Mono.error(error)))),
|
||||
connection -> Mono.fromCompletionStage(
|
||||
() -> connection.close().toCompletionStage()),
|
||||
(connection, error) -> Mono.fromCompletionStage(
|
||||
() -> connection.close().toCompletionStage()),
|
||||
connection -> Mono.fromCompletionStage(
|
||||
() -> connection.close().toCompletionStage()));
|
||||
}
|
||||
|
||||
public Mono<RowSet<Row>> preparedQuery(
|
||||
SqlConnection connection, String sql, Tuple parameters) {
|
||||
return Mono.fromCompletionStage(
|
||||
() -> connection.preparedQuery(sql)
|
||||
.execute(parameters)
|
||||
.toCompletionStage());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user