refactoring: change generics R: List<EntityI<*>> to R: EntityI<*>>, and return List<R>
This commit is contained in:
@@ -15,8 +15,8 @@ import java.util.concurrent.CompletableFuture
|
|||||||
interface Executable {
|
interface Executable {
|
||||||
fun <R: EntityI<*>> select(sql: String, typeReference: TypeReference<R>, values: List<Any?> = emptyList()): R?
|
fun <R: EntityI<*>> select(sql: String, typeReference: TypeReference<R>, values: List<Any?> = emptyList()): R?
|
||||||
fun <R: EntityI<*>> select(sql: String, typeReference: TypeReference<R>, values: Map<String, Any?>): R?
|
fun <R: EntityI<*>> select(sql: String, typeReference: TypeReference<R>, values: Map<String, Any?>): R?
|
||||||
fun <R: List<EntityI<*>>> select(sql: String, typeReference: TypeReference<R>, values: List<Any?> = emptyList()): R?
|
fun <R: EntityI<*>> select(sql: String, typeReference: TypeReference<List<R>>, values: List<Any?> = emptyList()): List<R>
|
||||||
fun <R: List<EntityI<*>>> select(sql: String, typeReference: TypeReference<R>, values: Map<String, Any?>): R
|
fun <R: EntityI<*>> select(sql: String, typeReference: TypeReference<List<R>>, values: Map<String, Any?>): List<R>
|
||||||
fun exec(sql: String, values: List<Any?> = emptyList()): CompletableFuture<QueryResult>
|
fun exec(sql: String, values: List<Any?> = emptyList()): CompletableFuture<QueryResult>
|
||||||
fun exec(sql: String, values: Map<String, Any?>): CompletableFuture<QueryResult>
|
fun exec(sql: String, values: Map<String, Any?>): CompletableFuture<QueryResult>
|
||||||
}
|
}
|
||||||
@@ -64,18 +64,18 @@ class Connection(
|
|||||||
inline fun <reified R: EntityI<*>> selectOne(sql: String, values: Map<String, Any?>): R? =
|
inline fun <reified R: EntityI<*>> selectOne(sql: String, values: Map<String, Any?>): R? =
|
||||||
select(sql, object: TypeReference<R>() {}, values)
|
select(sql, object: TypeReference<R>() {}, values)
|
||||||
|
|
||||||
override fun <R: List<EntityI<*>>> select(sql: String, typeReference: TypeReference<R>, values: List<Any?>): R {
|
override fun <R: EntityI<*>> select(sql: String, typeReference: TypeReference<List<R>>, values: List<Any?>): List<R> {
|
||||||
val future = connect().sendPreparedStatement(sql, compileArgs(values))
|
val future = connect().sendPreparedStatement(sql, compileArgs(values))
|
||||||
val json = future.get().rows[0].getString(0)
|
val json = future.get().rows[0].getString(0)
|
||||||
return if (json === null) {
|
return if (json === null) {
|
||||||
listOf<EntityI<*>>() as R
|
listOf<EntityI<*>>() as List<R>
|
||||||
} else {
|
} else {
|
||||||
serializer.deserializeList(json, typeReference)
|
serializer.deserializeList(json, typeReference)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun <reified R: List<EntityI<*>>> select(sql: String, values: List<Any?> = emptyList()): R =
|
inline fun <reified R: EntityI<*>> select(sql: String, values: List<Any?> = emptyList()): List<R> =
|
||||||
select(sql, object: TypeReference<R>() {}, values)
|
select(sql, object: TypeReference<List<R>>() {}, values)
|
||||||
|
|
||||||
fun <R: EntityI<*>> select(
|
fun <R: EntityI<*>> select(
|
||||||
sql: String,
|
sql: String,
|
||||||
@@ -116,18 +116,18 @@ class Connection(
|
|||||||
): Paginated<R> =
|
): Paginated<R> =
|
||||||
select(sql, page, limit, object: TypeReference<List<R>>() {}, values)
|
select(sql, page, limit, object: TypeReference<List<R>>() {}, values)
|
||||||
|
|
||||||
override fun <R: List<EntityI<*>>> select(
|
override fun <R: EntityI<*>> select(
|
||||||
sql: String,
|
sql: String,
|
||||||
typeReference: TypeReference<R>,
|
typeReference: TypeReference<List<R>>,
|
||||||
values: Map<String, Any?>
|
values: Map<String, Any?>
|
||||||
): R {
|
): List<R> {
|
||||||
return replaceArgs(sql, values) {
|
return replaceArgs(sql, values) {
|
||||||
select(this.sql, typeReference, this.parameters)
|
select(this.sql, typeReference, this.parameters)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun <reified R: List<EntityI<*>>> select(sql: String, values: Map<String, Any?>): R =
|
inline fun <reified R: EntityI<*>> select(sql: String, values: Map<String, Any?>): List<R> =
|
||||||
select(sql, object: TypeReference<R>() {}, values)
|
select(sql, object: TypeReference<List<R>>() {}, values)
|
||||||
|
|
||||||
override fun exec(sql: String, values: List<Any?>): CompletableFuture<QueryResult> {
|
override fun exec(sql: String, values: List<Any?>): CompletableFuture<QueryResult> {
|
||||||
return connect().sendPreparedStatement(sql, compileArgs(values))
|
return connect().sendPreparedStatement(sql, compileArgs(values))
|
||||||
|
|||||||
@@ -89,15 +89,15 @@ class Requester (
|
|||||||
}
|
}
|
||||||
inline fun <reified R : EntityI<*>> selectOne(values: Map<String, Any?>): R? = select(object: TypeReference<R>() {}, values)
|
inline fun <reified R : EntityI<*>> selectOne(values: Map<String, Any?>): R? = select(object: TypeReference<R>() {}, values)
|
||||||
|
|
||||||
override fun <R : List<EntityI<*>>> select(typeReference: TypeReference<R>, values: List<Any?>): R {
|
override fun <R : EntityI<*>> select(typeReference: TypeReference<List<R>>, values: List<Any?>): List<R> {
|
||||||
return connection.select(this.toString(), typeReference, values)
|
return connection.select(this.toString(), typeReference, values)
|
||||||
}
|
}
|
||||||
inline fun <reified R : List<EntityI<*>>> select(values: List<Any?> = emptyList()): R = select(object: TypeReference<R>() {}, values)
|
inline fun <reified R : EntityI<*>> select(values: List<Any?> = emptyList()): List<R> = select(object: TypeReference<List<R>>() {}, values)
|
||||||
|
|
||||||
override fun <R: List<EntityI<*>>> select(typeReference: TypeReference<R>, values: Map<String, Any?>): R {
|
override fun <R: EntityI<*>> select(typeReference: TypeReference<List<R>>, values: Map<String, Any?>): List<R> {
|
||||||
return connection.select(this.toString(), typeReference, values)
|
return connection.select(this.toString(), typeReference, values)
|
||||||
}
|
}
|
||||||
inline fun <reified R : List<EntityI<*>>> select(values: Map<String, Any?>): R = select(object: TypeReference<R>() {}, values)
|
inline fun <reified R : EntityI<*>> select(values: Map<String, Any?>): List<R> = select(object: TypeReference<List<R>>() {}, values)
|
||||||
|
|
||||||
override fun exec(values: List<Any?>): CompletableFuture<QueryResult> {
|
override fun exec(values: List<Any?>): CompletableFuture<QueryResult> {
|
||||||
return connection.exec(sql, values)
|
return connection.exec(sql, values)
|
||||||
@@ -138,24 +138,24 @@ class Requester (
|
|||||||
/**
|
/**
|
||||||
* Select list of entities with list of parameters
|
* Select list of entities with list of parameters
|
||||||
*/
|
*/
|
||||||
override fun <R : List<EntityI<*>>> select(typeReference: TypeReference<R>, values: List<Any?>): R {
|
override fun <R : EntityI<*>> select(typeReference: TypeReference<List<R>>, values: List<Any?>): List<R> {
|
||||||
val args = compileArgs(values)
|
val args = compileArgs(values)
|
||||||
val sql = "SELECT * FROM ${definition.name} ($args)"
|
val sql = "SELECT * FROM ${definition.name} ($args)"
|
||||||
|
|
||||||
return connection.select(sql, typeReference, values)
|
return connection.select(sql, typeReference, values)
|
||||||
}
|
}
|
||||||
inline fun <reified R: List<EntityI<*>>> select(values: List<Any?> = emptyList()): R = select(object: TypeReference<R>() {}, values)
|
inline fun <reified R: EntityI<*>> select(values: List<Any?> = emptyList()): List<R> = select(object: TypeReference<List<R>>() {}, values)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Select list of entities with named parameters
|
* Select list of entities with named parameters
|
||||||
*/
|
*/
|
||||||
override fun <R: List<EntityI<*>>> select(typeReference: TypeReference<R>, values: Map<String, Any?>): R {
|
override fun <R: EntityI<*>> select(typeReference: TypeReference<List<R>>, values: Map<String, Any?>): List<R> {
|
||||||
val args = compileArgs(values)
|
val args = compileArgs(values)
|
||||||
val sql = "SELECT * FROM ${definition.name} ($args)"
|
val sql = "SELECT * FROM ${definition.name} ($args)"
|
||||||
|
|
||||||
return connection.select(sql, typeReference, values)
|
return connection.select(sql, typeReference, values)
|
||||||
}
|
}
|
||||||
inline fun <reified R: List<EntityI<*>>> select(values: Map<String, Any?>): R = select(object: TypeReference<R>() {}, values)
|
inline fun <reified R: EntityI<*>> select(values: Map<String, Any?>): List<R> = select(object: TypeReference<List<R>>() {}, values)
|
||||||
|
|
||||||
override fun exec(values: List<Any?>): CompletableFuture<QueryResult> {
|
override fun exec(values: List<Any?>): CompletableFuture<QueryResult> {
|
||||||
val args = compileArgs(values)
|
val args = compileArgs(values)
|
||||||
@@ -206,8 +206,8 @@ class Requester (
|
|||||||
fun <R : EntityI<*>> select(typeReference: TypeReference<R>, values: List<Any?> = emptyList()): R?
|
fun <R : EntityI<*>> select(typeReference: TypeReference<R>, values: List<Any?> = emptyList()): R?
|
||||||
fun <R : EntityI<*>> select(typeReference: TypeReference<R>, values: Map<String, Any?>): R?
|
fun <R : EntityI<*>> select(typeReference: TypeReference<R>, values: Map<String, Any?>): R?
|
||||||
|
|
||||||
fun <R : List<EntityI<*>>> select(typeReference: TypeReference<R>, values: List<Any?> = emptyList()): R
|
fun <R : EntityI<*>> select(typeReference: TypeReference<List<R>>, values: List<Any?> = emptyList()): List<R>
|
||||||
fun <R : List<EntityI<*>>> select(typeReference: TypeReference<R>, values: Map<String, Any?>): R
|
fun <R : EntityI<*>> select(typeReference: TypeReference<List<R>>, values: Map<String, Any?>): List<R>
|
||||||
|
|
||||||
fun exec(values: List<Any?> = emptyList()): CompletableFuture<QueryResult>
|
fun exec(values: List<Any?> = emptyList()): CompletableFuture<QueryResult>
|
||||||
fun exec(values: Map<String, Any?>): CompletableFuture<QueryResult>
|
fun exec(values: Map<String, Any?>): CompletableFuture<QueryResult>
|
||||||
|
|||||||
@@ -59,15 +59,15 @@ data class Migrations private constructor(
|
|||||||
*/
|
*/
|
||||||
private fun getMigrationFromDB() {
|
private fun getMigrationFromDB() {
|
||||||
File(this::class.java.getResource("/sql/migration/findAllFunction.sql").toURI()).let {
|
File(this::class.java.getResource("/sql/migration/findAllFunction.sql").toURI()).let {
|
||||||
connection.select<List<MigrationEntity>>(it.readText())
|
connection.select<MigrationEntity>(it.readText())
|
||||||
.filterNotNull().map { function ->
|
.map { function ->
|
||||||
functions[function.filename] = Function(function.up, function.down, connection, function.executedAt)
|
functions[function.filename] = Function(function.up, function.down, connection, function.executedAt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
File(this::class.java.getResource("/sql/migration/findAllHistory.sql").toURI()).let {
|
File(this::class.java.getResource("/sql/migration/findAllHistory.sql").toURI()).let {
|
||||||
connection.select<List<MigrationEntity>>(it.readText())
|
connection.select<MigrationEntity>(it.readText())
|
||||||
.filterNotNull().map { query ->
|
.map { query ->
|
||||||
queries[query.filename] = Query(query.filename, query.up, query.down, connection, query.executedAt)
|
queries[query.filename] = Query(query.filename, query.up, query.down, connection, query.executedAt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user