@@ -35,8 +35,10 @@ import com.github.mgramin.sqlboot.model.resourcetype.wrappers.header.SelectWrapp
3535import com.github.mgramin.sqlboot.model.resourcetype.wrappers.list.SortWrapper
3636import com.github.mgramin.sqlboot.model.uri.Uri
3737import com.github.mgramin.sqlboot.template.generator.impl.GroovyTemplateGenerator
38+ import com.github.mgramin.sqlboot.tools.files.file.impl.SimpleFile
3839import reactor.core.publisher.Flux
3940import java.io.File
41+ import java.nio.charset.Charset
4042import java.nio.charset.StandardCharsets.UTF_8
4143
4244/* *
@@ -47,36 +49,26 @@ class FsResourceTypes(
4749 private val uri : Uri
4850) : ResourceType {
4951
50- private val resourceTypes: List <ResourceType > = walk(dbConnections.first().baseFolder!! .file.path, uri, dbConnections.first() )
52+ private val resourceTypes: List <ResourceType > = walk(dbConnections.first().baseFolder!! .file.path)
5153
52- private fun walk (path : String , uri : Uri , connection : SimpleDbConnection ): List <ResourceType > {
53- val result = arrayListOf<ResourceType >()
54- File (path)
55- .listFiles()
56- .asSequence()
57- .filter { it.isDirectory }
58- .onEach { result.addAll(walk(it.absolutePath, uri, connection)) }
59- .filter { File (it, " README.md" ).exists() }
60- .forEach { dir ->
61- val map = MarkdownFile (File (dir, " README.md" ).readText(UTF_8 )).parse()
62- if (map.isNotEmpty()) {
63- val sql = map[uri.action()] ? : map.entries.iterator().next().value
64- val resourceType =
65- // CacheWrapper(
66- SelectWrapper (
67- // PageWrapper(
68- SortWrapper (
69- BodyWrapper (
70- SqlResourceType (
71- aliases = listOf (dir.name),
72- sql = sql,
73- connections = dbConnections),
74- templateGenerator = GroovyTemplateGenerator (" [EMPTY BODY]" ))))
75- // )
76- result.add(resourceType)
77- }
54+ private fun walk (path : String ): List <ResourceType > {
55+ return File (path)
56+ .walkTopDown()
57+ .filter { it.isFile }
58+ .filter { it.extension.equals(" md" , true ) || it.extension.equals(" sql" , true ) }
59+ .map { return @map if (it.extension.equals(" md" , true )) MarkdownFile (it.name, it.readText(UTF_8 )) else SimpleFile (it.name, it.readText(UTF_8 ).toByteArray()) }
60+ .filter { it.content().isNotEmpty() }
61+ .map {
62+ return @map SelectWrapper (
63+ SortWrapper (
64+ BodyWrapper (
65+ SqlResourceType (
66+ aliases = listOf (File (it.name()).nameWithoutExtension),
67+ sql = it.content().toString(Charset .defaultCharset()),
68+ connections = dbConnections),
69+ templateGenerator = GroovyTemplateGenerator (" [EMPTY BODY]" ))))
7870 }
79- return result
71+ .toList()
8072 }
8173
8274 @Deprecated(" " )
0 commit comments