@@ -111,7 +111,7 @@ class BeePersistentDSLCodegen(
111
111
.addNamedStmt(" return ${DEFAULT_BEE_SELECTION } (selectionBuilder.fields)" )
112
112
selectionDSL.addFunction(selectorFn.build())
113
113
114
- selectionDSL.traverseWhereDSL(view, selectionDSLName )
114
+ selectionDSL.traverseWhereDSL(view, selectionDSL, sort = true )
115
115
116
116
addType(selectionDSL.build())
117
117
}
@@ -273,35 +273,53 @@ class BeePersistentDSLCodegen(
273
273
274
274
private fun TypeSpec.Builder.traverseWhereDSL (
275
275
entityView : EntityViewInfo ,
276
- dslName : String ,
276
+ viewDSL : TypeSpec . Builder ,
277
277
path : String = "",
278
- visitedEmbeddedViews : MutableMap <String , String ?> = mutableMapOf()
278
+ visitedEmbeddedViews : MutableMap <String , String ?> = mutableMapOf(),
279
+ sort : Boolean = false,
279
280
): String = run {
280
281
val entity = entityView.entity
281
282
282
283
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!
297
299
val (allRelations, allColumns)
298
300
= viewColumnsWithSubclasses(entityView, views)
299
301
300
302
val (columns, embedded) = allColumns.partition { ! it.isEmbedded }
301
303
for (column in columns) {
302
- addPath(column, path, true )
304
+ viewDSL. addPath(column, path, sort )
303
305
}
304
306
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())
305
323
306
324
// val relationMapInput = allRelations.map {
307
325
// (simpleName, viewName) -> Pair(simpleName, viewName)
@@ -371,7 +389,8 @@ class BeePersistentDSLCodegen(
371
389
//
372
390
// addType(viewDSL.build())
373
391
374
- whereDSLName
392
+ // whereDSLName
393
+ " "
375
394
}
376
395
377
396
private fun TypeSpec.Builder.addPath (
0 commit comments