mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	refactor: optimize queries (#5158)
This commit will change the join to only get results for either archived or non-archived features based on the query
This commit is contained in:
		
							parent
							
								
									3b0b372f75
								
							
						
					
					
						commit
						87fd924be3
					
				@ -91,6 +91,10 @@ export class FeatureToggleRowConverter {
 | 
				
			|||||||
            enabled: row.enabled || false,
 | 
					            enabled: row.enabled || false,
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (!newEnvironment.name || !newEnvironment.lastSeenAt) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        feature.environments.push(newEnvironment);
 | 
					        feature.environments.push(newEnvironment);
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -172,7 +172,7 @@ export default class FeatureToggleStore implements IFeatureToggleStore {
 | 
				
			|||||||
        builder.addSelectColumn('ft.tag_type as tag_type');
 | 
					        builder.addSelectColumn('ft.tag_type as tag_type');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (this.flagResolver.isEnabled('useLastSeenRefactor')) {
 | 
					        if (this.flagResolver.isEnabled('useLastSeenRefactor')) {
 | 
				
			||||||
            builder.withLastSeenByEnvironment();
 | 
					            builder.withLastSeenByEnvironment(archived);
 | 
				
			||||||
            builder.addSelectColumn(
 | 
					            builder.addSelectColumn(
 | 
				
			||||||
                'last_seen_at_metrics.last_seen_at as env_last_seen_at',
 | 
					                'last_seen_at_metrics.last_seen_at as env_last_seen_at',
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
@ -262,7 +262,8 @@ export default class FeatureToggleStore implements IFeatureToggleStore {
 | 
				
			|||||||
            'features.archived_at as archived_at',
 | 
					            'features.archived_at as archived_at',
 | 
				
			||||||
        ]);
 | 
					        ]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        builder.query('features').withLastSeenByEnvironment();
 | 
					        const archived = true;
 | 
				
			||||||
 | 
					        builder.query('features').withLastSeenByEnvironment(archived);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        builder.addSelectColumn(
 | 
					        builder.addSelectColumn(
 | 
				
			||||||
            'last_seen_at_metrics.last_seen_at as env_last_seen_at',
 | 
					            'last_seen_at_metrics.last_seen_at as env_last_seen_at',
 | 
				
			||||||
 | 
				
			|||||||
@ -176,7 +176,7 @@ class FeatureStrategiesStore implements IFeatureStrategiesStore {
 | 
				
			|||||||
        flagResolver: IFlagResolver,
 | 
					        flagResolver: IFlagResolver,
 | 
				
			||||||
    ) {
 | 
					    ) {
 | 
				
			||||||
        this.db = db;
 | 
					        this.db = db;
 | 
				
			||||||
        this.logger = getLogger('feature-toggle-store.ts');
 | 
					        this.logger = getLogger('feature-toggle-strategies-store.ts');
 | 
				
			||||||
        this.timer = (action) =>
 | 
					        this.timer = (action) =>
 | 
				
			||||||
            metricsHelper.wrapTimer(eventBus, DB_TIME, {
 | 
					            metricsHelper.wrapTimer(eventBus, DB_TIME, {
 | 
				
			||||||
                store: 'feature-toggle-strategies',
 | 
					                store: 'feature-toggle-strategies',
 | 
				
			||||||
 | 
				
			|||||||
@ -93,8 +93,16 @@ export class FeatureToggleListBuilder {
 | 
				
			|||||||
        return this;
 | 
					        return this;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    withLastSeenByEnvironment = () => {
 | 
					    withLastSeenByEnvironment = (archived = false) => {
 | 
				
			||||||
        this.internalQuery.leftJoin('last_seen_at_metrics', 'last_seen_at_metrics.feature_name', 'features.name');
 | 
					        if (archived) {
 | 
				
			||||||
 | 
					            this.internalQuery.leftJoin('last_seen_at_metrics', function() {
 | 
				
			||||||
 | 
					                this.on('last_seen_at_metrics.feature_name', '=', 'features.name')
 | 
				
			||||||
 | 
					                    .andOnNotNull('features.archived_at');
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            this.internalQuery.leftJoin('last_seen_at_metrics', 'last_seen_at_metrics.feature_name', 'features.name');
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return this;
 | 
					        return this;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user