@@ -5,6 +5,7 @@ import camelCase from 'camelcase';
5
5
import { CubeSymbols } from './CubeSymbols' ;
6
6
import { UserError } from './UserError' ;
7
7
import { BaseMeasure } from '../adapter' ;
8
+ import { getEnv } from "@cubejs-backend/shared" ;
8
9
9
10
export class CubeToMetaTransformer {
10
11
/**
@@ -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