Skip to content

Commit 74edaf3

Browse files
committed
1 parent f926b15 commit 74edaf3

17 files changed

Lines changed: 116 additions & 61 deletions

File tree

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,11 @@
242242
<version>20171018</version>
243243
</dependency>
244244

245+
<dependency>
246+
<groupId>net.steppschuh.markdowngenerator</groupId>
247+
<artifactId>markdowngenerator</artifactId>
248+
<version>1.3.1.1</version>
249+
</dependency>
245250

246251
</dependencies>
247252

src/main/kotlin/com/github/mgramin/sqlboot/model/resourcetype/ResourceType.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ package com.github.mgramin.sqlboot.model.resourcetype
2727
import com.fasterxml.jackson.annotation.JsonProperty
2828
import com.github.mgramin.sqlboot.model.resource.DbResource
2929
import com.github.mgramin.sqlboot.model.uri.Uri
30+
import reactor.core.publisher.Flux
3031

3132
/**
3233
* Resource type e.g. Table, Index, Stored function etc
@@ -72,6 +73,6 @@ interface ResourceType {
7273
/**
7374
* Read resources by uri
7475
*/
75-
fun read(uri: Uri): Sequence<DbResource>
76+
fun read(uri: Uri): Flux<DbResource>
7677

7778
}

src/main/kotlin/com/github/mgramin/sqlboot/model/resourcetype/impl/FakeDbResourceType.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ import com.github.mgramin.sqlboot.model.resource.impl.FakeDbResource
2929
import com.github.mgramin.sqlboot.model.resourcetype.ResourceType
3030
import com.github.mgramin.sqlboot.model.uri.Uri
3131
import com.github.mgramin.sqlboot.model.uri.impl.DbUri
32+
import reactor.core.publisher.Flux
33+
import reactor.core.publisher.toFlux
3234
import java.util.Arrays.asList
3335

3436
/**
@@ -44,11 +46,11 @@ class FakeDbResourceType : ResourceType {
4446
return arrayListOf("schema", "table", "index")
4547
}
4648

47-
override fun read(uri: Uri): Sequence<DbResource> {
49+
override fun read(uri: Uri): Flux<DbResource> {
4850
return sequenceOf(
4951
FakeDbResource(DbUri("table/hr.persons")),
5052
FakeDbResource(DbUri("table/hr.users")),
51-
FakeDbResource(DbUri("table/hr.jobs")))
53+
FakeDbResource(DbUri("table/hr.jobs"))).toFlux()
5254
}
5355

5456
override fun metaData(): Map<String, String> {

src/main/kotlin/com/github/mgramin/sqlboot/model/resourcetype/impl/composite/FsResourceTypes.kt

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,17 @@ import com.github.mgramin.sqlboot.model.resourcetype.wrappers.header.SelectWrapp
3535
import com.github.mgramin.sqlboot.model.resourcetype.wrappers.list.SortWrapper
3636
import com.github.mgramin.sqlboot.model.uri.Uri
3737
import com.github.mgramin.sqlboot.template.generator.impl.GroovyTemplateGenerator
38+
import reactor.core.publisher.Flux
3839
import java.io.File
3940
import java.nio.charset.StandardCharsets.UTF_8
4041

4142
/**
4243
* Created by MGramin on 11.07.2017.
4344
*/
44-
class FsResourceTypes(private val dbConnections: List<SimpleDbConnection>, uri: Uri) : ResourceType {
45+
class FsResourceTypes(
46+
private val dbConnections: List<SimpleDbConnection>,
47+
private val uri: Uri
48+
) : ResourceType {
4549

4650
private val resourceTypes: List<ResourceType> = walk(dbConnections.first().baseFolder!!.file.path, uri, dbConnections.first())
4751

@@ -61,13 +65,13 @@ class FsResourceTypes(private val dbConnections: List<SimpleDbConnection>, uri:
6165
// CacheWrapper(
6266
SelectWrapper(
6367
// PageWrapper(
64-
SortWrapper(
65-
BodyWrapper(
66-
SqlResourceType(
67-
aliases = listOf(dir.name),
68-
sql = sql,
69-
connections = dbConnections),
70-
templateGenerator = GroovyTemplateGenerator("[EMPTY BODY]"))))
68+
SortWrapper(
69+
BodyWrapper(
70+
SqlResourceType(
71+
aliases = listOf(dir.name),
72+
sql = sql,
73+
connections = dbConnections),
74+
templateGenerator = GroovyTemplateGenerator("[EMPTY BODY]"))))
7175
// )
7276
result.add(resourceType)
7377
}
@@ -88,14 +92,18 @@ class FsResourceTypes(private val dbConnections: List<SimpleDbConnection>, uri:
8892
throw BootException("Not implemented!")
8993
}
9094

91-
override fun read(uri: Uri): Sequence<DbResource> {
92-
val resourceType: ResourceType = resourceTypes
95+
override fun read(uri: Uri): Flux<DbResource> {
96+
return resourceTypes
9397
.asSequence()
9498
.first { v -> v.name().equals(uri.type(), ignoreCase = true) }
95-
return resourceType.read(uri)
99+
.read(uri)
96100
}
97101

98102
override fun metaData(): Map<String, String> {
99-
throw BootException("Not implemented!")
103+
return resourceTypes
104+
.asSequence()
105+
.first { v -> v.name().equals(uri.type(), ignoreCase = true) }
106+
.metaData()
100107
}
108+
101109
}

src/main/kotlin/com/github/mgramin/sqlboot/model/resourcetype/impl/sql/SqlResourceType.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class SqlResourceType(
6060
.map { v -> strip(v, "@") }
6161
}
6262

63-
override fun read(uri: Uri): Sequence<DbResource> {
63+
override fun read(uri: Uri): Flux<DbResource> {
6464
val mergeSequential: Flux<Map<String, Any>> =
6565
Flux.merge(
6666
connections
@@ -88,9 +88,6 @@ class SqlResourceType(
8888
.toMap()
8989
DbResourceImpl(name, this, DbUri(this.name(), path), headers) as DbResource
9090
}
91-
.collectList()
92-
.block()
93-
.asSequence()
9491
}
9592

9693
override fun metaData(): Map<String, String> {

src/main/kotlin/com/github/mgramin/sqlboot/model/resourcetype/wrappers/body/BodyWrapper.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import com.github.mgramin.sqlboot.model.resource.wrappers.DbResourceBodyWrapper
3030
import com.github.mgramin.sqlboot.model.resourcetype.ResourceType
3131
import com.github.mgramin.sqlboot.model.uri.Uri
3232
import com.github.mgramin.sqlboot.template.generator.TemplateGenerator
33+
import reactor.core.publisher.Flux
3334

3435
/**
3536
* Created by MGramin on 18.07.2017.
@@ -48,7 +49,7 @@ class BodyWrapper(
4849
}
4950

5051
@Throws(BootException::class)
51-
override fun read(uri: Uri): Sequence<DbResource> {
52+
override fun read(uri: Uri): Flux<DbResource> {
5253
return origin.read(uri)
5354
.map { r -> DbResourceBodyWrapper(r, templateGenerator.generate(r.headers())) }
5455
}

src/main/kotlin/com/github/mgramin/sqlboot/model/resourcetype/wrappers/header/DbNameWrapper.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import com.github.mgramin.sqlboot.model.connection.DbConnection
2828
import com.github.mgramin.sqlboot.model.resource.DbResource
2929
import com.github.mgramin.sqlboot.model.resourcetype.ResourceType
3030
import com.github.mgramin.sqlboot.model.uri.Uri
31+
import reactor.core.publisher.Flux
3132

3233
class DbNameWrapper(private val origin: ResourceType,
3334
private val dbConnection: DbConnection) : ResourceType {
@@ -46,7 +47,7 @@ class DbNameWrapper(private val origin: ResourceType,
4647
return metaData
4748
}
4849

49-
override fun read(uri: Uri): Sequence<DbResource> {
50+
override fun read(uri: Uri): Flux<DbResource> {
5051
return origin.read(uri).map {
5152
return@map object : DbResource {
5253

src/main/kotlin/com/github/mgramin/sqlboot/model/resourcetype/wrappers/header/SelectWrapper.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import com.github.mgramin.sqlboot.model.resource.wrappers.DbResourceBodyWrapper
3131
import com.github.mgramin.sqlboot.model.resourcetype.Metadata
3232
import com.github.mgramin.sqlboot.model.resourcetype.ResourceType
3333
import com.github.mgramin.sqlboot.model.uri.Uri
34+
import reactor.core.publisher.Flux
3435
import java.util.Arrays.asList
3536

3637
/**
@@ -47,7 +48,7 @@ class SelectWrapper(private val origin: ResourceType, private val parameterName:
4748
}
4849

4950
@Throws(BootException::class)
50-
override fun read(uri: Uri): Sequence<DbResource> {
51+
override fun read(uri: Uri): Flux<DbResource> {
5152
val select = uri.params()[parameterName]
5253
val resources = origin.read(uri)
5354
return if (select != null) {

src/main/kotlin/com/github/mgramin/sqlboot/model/resourcetype/wrappers/list/CacheWrapper.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ import com.github.mgramin.sqlboot.exceptions.BootException
2828
import com.github.mgramin.sqlboot.model.resource.DbResource
2929
import com.github.mgramin.sqlboot.model.resourcetype.ResourceType
3030
import com.github.mgramin.sqlboot.model.uri.Uri
31+
import reactor.core.publisher.Flux
32+
import reactor.core.publisher.toFlux
3133
import javax.cache.Cache
3234
import javax.cache.CacheManager
3335
import javax.cache.Caching
@@ -54,14 +56,14 @@ class CacheWrapper(private val origin: ResourceType, private val parameterName:
5456
}
5557

5658
@Throws(BootException::class)
57-
override fun read(uri: Uri): Sequence<DbResource> {
59+
override fun read(uri: Uri): Flux<DbResource> {
5860
val cache = uri.params()[parameterName] ?: "true"
5961
var cachedResources: List<DbResource>? = this.cache.get(uri.toString())
6062
if (cachedResources == null || cache.equals("false", ignoreCase = true)) {
61-
cachedResources = origin.read(uri).toList()
63+
cachedResources = origin.read(uri).collectList().block()
6264
this.cache.put(uri.toString(), cachedResources)
6365
}
64-
return cachedResources.asSequence()
66+
return cachedResources!!.toFlux()
6567
}
6668

6769
override fun metaData(): Map<String, String> {

src/main/kotlin/com/github/mgramin/sqlboot/model/resourcetype/wrappers/list/LimitWrapper.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import com.github.mgramin.sqlboot.exceptions.BootException
2828
import com.github.mgramin.sqlboot.model.resource.DbResource
2929
import com.github.mgramin.sqlboot.model.resourcetype.ResourceType
3030
import com.github.mgramin.sqlboot.model.uri.Uri
31+
import reactor.core.publisher.Flux
3132

3233
/**
3334
* @author Maksim Gramin (mgramin@gmail.com)
@@ -45,9 +46,9 @@ class LimitWrapper(private val origin: ResourceType, private val parameterName:
4546
}
4647

4748
@Throws(BootException::class)
48-
override fun read(uri: Uri): Sequence<DbResource> {
49+
override fun read(uri: Uri): Flux<DbResource> {
4950
val limit = uri.params().let { v -> v[parameterName] } ?: return origin.read(uri)
50-
return origin.read(uri).take(limit.toInt())
51+
return origin.read(uri).take(limit.toLong())
5152
}
5253

5354
override fun metaData(): Map<String, String> {

0 commit comments

Comments
 (0)