@@ -3,13 +3,14 @@ import type {
3
3
FeatureEnvironmentKey ,
4
4
IFeatureEnvironmentStore ,
5
5
} from '../types/stores/feature-environment-store' ;
6
- import type { Logger , LogProvider } from '../logger' ;
6
+ import type { Logger } from '../logger' ;
7
7
import metricsHelper from '../util/metrics-helper' ;
8
8
import { DB_TIME } from '../metric-events' ;
9
9
import type { IFeatureEnvironment , IVariant } from '../types/model' ;
10
10
import NotFoundError from '../error/notfound-error' ;
11
11
import { v4 as uuidv4 } from 'uuid' ;
12
12
import type { Db } from './db' ;
13
+ import type { IUnleashConfig } from '../types' ;
13
14
14
15
const T = {
15
16
featureEnvs : 'feature_environments' ,
@@ -36,14 +37,20 @@ export class FeatureEnvironmentStore implements IFeatureEnvironmentStore {
36
37
37
38
private readonly timer : Function ;
38
39
39
- constructor ( db : Db , eventBus : EventEmitter , getLogger : LogProvider ) {
40
+ private readonly isOss : boolean ;
41
+ constructor (
42
+ db : Db ,
43
+ eventBus : EventEmitter ,
44
+ { getLogger, isOss } : Pick < IUnleashConfig , 'getLogger' | 'isOss' > ,
45
+ ) {
40
46
this . db = db ;
41
47
this . logger = getLogger ( 'feature-environment-store.ts' ) ;
42
48
this . timer = ( action ) =>
43
49
metricsHelper . wrapTimer ( eventBus , DB_TIME , {
44
50
store : 'feature-environments' ,
45
51
action,
46
52
} ) ;
53
+ this . isOss = isOss ;
47
54
}
48
55
49
56
async delete ( {
@@ -96,11 +103,30 @@ export class FeatureEnvironmentStore implements IFeatureEnvironmentStore {
96
103
) ;
97
104
}
98
105
106
+ addOssFilterIfNeeded ( queryBuilder ) {
107
+ if ( this . isOss ) {
108
+ return queryBuilder
109
+ . join (
110
+ 'environments' ,
111
+ 'environments.name' ,
112
+ '=' ,
113
+ `${ T . featureEnvs } .environment` ,
114
+ )
115
+ . whereIn ( 'environments.name' , [
116
+ 'default' ,
117
+ 'development' ,
118
+ 'production' ,
119
+ ] ) ;
120
+ }
121
+ return queryBuilder ;
122
+ }
123
+
99
124
async getAll ( query ?: Object ) : Promise < IFeatureEnvironment [ ] > {
100
125
let rows = this . db ( T . featureEnvs ) ;
101
126
if ( query ) {
102
127
rows = rows . where ( query ) ;
103
128
}
129
+ this . addOssFilterIfNeeded ( rows ) ;
104
130
return ( await rows ) . map ( ( r ) => ( {
105
131
enabled : r . enabled ,
106
132
featureName : r . feature_name ,
@@ -119,6 +145,7 @@ export class FeatureEnvironmentStore implements IFeatureEnvironmentStore {
119
145
if ( environment ) {
120
146
rows = rows . where ( { environment } ) ;
121
147
}
148
+ this . addOssFilterIfNeeded ( rows ) ;
122
149
return ( await rows ) . map ( ( r ) => ( {
123
150
enabled : r . enabled ,
124
151
featureName : r . feature_name ,
0 commit comments