Skip to content

Commit ba74720

Browse files
committed
Continued work on generating DSL for where clause
1 parent f79a19b commit ba74720

File tree

1 file changed

+38
-19
lines changed

1 file changed

+38
-19
lines changed

bee.persistent/src/blaze-processor/kotlin/com/beeproduced/bee/persistent/blaze/processor/codegen/BeePersistentDSLCodegen.kt

+38-19
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ class BeePersistentDSLCodegen(
111111
.addNamedStmt("return ${DEFAULT_BEE_SELECTION}(selectionBuilder.fields)")
112112
selectionDSL.addFunction(selectorFn.build())
113113

114-
selectionDSL.traverseWhereDSL(view, selectionDSLName)
114+
selectionDSL.traverseWhereDSL(view, selectionDSL, sort = true)
115115

116116
addType(selectionDSL.build())
117117
}
@@ -273,35 +273,53 @@ class BeePersistentDSLCodegen(
273273

274274
private fun TypeSpec.Builder.traverseWhereDSL(
275275
entityView: EntityViewInfo,
276-
dslName: String,
276+
viewDSL: TypeSpec.Builder,
277277
path: String = "",
278-
visitedEmbeddedViews: MutableMap<String, String?> = mutableMapOf()
278+
visitedEmbeddedViews: MutableMap<String, String?> = mutableMapOf(),
279+
sort: Boolean = false,
279280
): String = run {
280281
val entity = entityView.entity
281282

282283

283-
val whereDSLName = "${entityView.name}__Where"
284-
val viewDSL = TypeSpec.classBuilder(whereDSLName)
285-
val viewDSLFields = PropertySpec.builder(
286-
"fields", MUTABLE_SET.parameterizedBy(poetMap.classMapping(TYPED_FIELD_NODE))
287-
)
288-
val idName = entity.id.simpleName
289-
val entitySimpleName = entity.simpleName
290-
viewDSLFields.initializer(
291-
CodeBlock.builder()
292-
.addNamedStmt("mutableSetOf(${TYPED_FIELD_NODE}(\"$idName\", \"$entitySimpleName\"))")
293-
.build()
294-
)
295-
viewDSL.addProperty(viewDSLFields.build())
296-
284+
// val whereDSLName = "${entityView.name}__Where"
285+
// val viewDSL = TypeSpec.classBuilder(whereDSLName)
286+
// val viewDSLFields = PropertySpec.builder(
287+
// "fields", MUTABLE_SET.parameterizedBy(poetMap.classMapping(TYPED_FIELD_NODE))
288+
// )
289+
// val idName = entity.id.simpleName
290+
// val entitySimpleName = entity.simpleName
291+
// viewDSLFields.initializer(
292+
// CodeBlock.builder()
293+
// .addNamedStmt("mutableSetOf(${TYPED_FIELD_NODE}(\"$idName\", \"$entitySimpleName\"))")
294+
// .build()
295+
// )
296+
// viewDSL.addProperty(viewDSLFields.build())
297+
298+
// TODO: Apply treat operator!
297299
val (allRelations, allColumns)
298300
= viewColumnsWithSubclasses(entityView, views)
299301

300302
val (columns, embedded) = allColumns.partition { !it.isEmbedded }
301303
for (column in columns) {
302-
addPath(column, path, true)
304+
viewDSL.addPath(column, path, sort)
303305
}
304306

307+
for ((simpleName, viewName) in allRelations) {
308+
val innerView = views.entityViews.getValue(viewName)
309+
if (innerView.isExtended) continue
310+
311+
val whereDSLName = "${innerView.name}__Where"
312+
val innerDSL = TypeSpec.objectBuilder(whereDSLName)
313+
val newPath = if (path.isEmpty()) "$simpleName."
314+
else "$path$simpleName."
315+
traverseWhereDSL(innerView, innerDSL, newPath, visitedEmbeddedViews)
316+
317+
addType(innerDSL.build())
318+
}
319+
320+
321+
// if (this !== viewDSL)
322+
// addType(viewDSL.build())
305323

306324
// val relationMapInput = allRelations.map {
307325
// (simpleName, viewName) -> Pair(simpleName, viewName)
@@ -371,7 +389,8 @@ class BeePersistentDSLCodegen(
371389
//
372390
// addType(viewDSL.build())
373391

374-
whereDSLName
392+
// whereDSLName
393+
""
375394
}
376395

377396
private fun TypeSpec.Builder.addPath(

0 commit comments

Comments
 (0)