@@ -2,6 +2,7 @@ import inflection from 'inflection';
2
2
import R from 'ramda' ;
3
3
import camelCase from 'camelcase' ;
4
4
5
+ import { getEnv } from '@cubejs-backend/shared' ;
5
6
import { CubeSymbols } from './CubeSymbols' ;
6
7
import { UserError } from './UserError' ;
7
8
import { BaseMeasure } from '../adapter' ;
@@ -43,25 +44,34 @@ export class CubeToMetaTransformer {
43
44
44
45
const isCubeVisible = this . isVisible ( cube , true ) ;
45
46
46
- const flatFolderSeparator = '/' ;
47
+ const flatFolderSeparator = getEnv ( 'nestedFoldersDelimiter' ) ;
47
48
const flatFolders = [ ] ;
48
49
49
- const processFolder = ( folder , path = [ ] ) => {
50
+ const processFolder = ( folder , path = [ ] , mergedMembers = [ ] ) => {
50
51
const flatMembers = [ ] ;
51
52
const nestedMembers = folder . includes . map ( member => {
52
53
if ( member . type === 'folder' ) {
53
- return processFolder ( member , [ ...path , folder . name ] ) ;
54
+ return processFolder ( member , [ ...path , folder . name ] , flatMembers ) ;
54
55
}
55
56
const memberName = `${ cube . name } .${ member . name } ` ;
56
57
flatMembers . push ( memberName ) ;
57
58
58
- return ` ${ cube . name } . ${ member . name } ` ;
59
+ return memberName ;
59
60
} ) ;
60
61
61
- flatFolders . push ( {
62
- name : [ ...path , folder . name ] . join ( flatFolderSeparator ) ,
63
- members : flatMembers ,
64
- } ) ;
62
+ if ( flatFolderSeparator !== '' ) {
63
+ flatFolders . push ( {
64
+ name : [ ...path , folder . name ] . join ( flatFolderSeparator ) ,
65
+ members : flatMembers ,
66
+ } ) ;
67
+ } else if ( path . length > 0 ) {
68
+ mergedMembers . push ( ...flatMembers ) ;
69
+ } else { // We're at the root level
70
+ flatFolders . push ( {
71
+ name : folder . name ,
72
+ members : flatMembers ,
73
+ } ) ;
74
+ }
65
75
66
76
return {
67
77
name : folder . name ,
0 commit comments