mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	refactor: largest resources queries (#7466)
This commit is contained in:
		
							parent
							
								
									a9a87bc84d
								
							
						
					
					
						commit
						db525a6617
					
				| @ -11,66 +11,54 @@ export class LargestResourcesReadModel implements ILargestResourcesReadModel { | ||||
|     async getLargestProjectEnvironments( | ||||
|         limit: number, | ||||
|     ): Promise<Array<{ project: string; environment: string; size: number }>> { | ||||
|         const { rows } = await this.db.raw(` | ||||
|             WITH ProjectSizes AS ( | ||||
|                 SELECT | ||||
|                     project_name, | ||||
|                     environment, | ||||
|                     SUM(pg_column_size(constraints) + pg_column_size(variants) + pg_column_size(parameters)) AS total_size | ||||
|                 FROM | ||||
|                     feature_strategies | ||||
|                 GROUP BY | ||||
|                     project_name, | ||||
|                     environment | ||||
|             ) | ||||
|             SELECT | ||||
|                 project_name, | ||||
|                 environment, | ||||
|                 total_size | ||||
|             FROM | ||||
|                 ProjectSizes | ||||
|             ORDER BY | ||||
|                 total_size DESC | ||||
|             LIMIT ${limit} | ||||
|         `);
 | ||||
|         const result = await this.db('feature_strategies') | ||||
|             .select('project_name', 'environment') | ||||
|             .sum({ | ||||
|                 total_size: this.db.raw( | ||||
|                     'pg_column_size(constraints) + pg_column_size(variants) + pg_column_size(parameters)', | ||||
|                 ), | ||||
|             }) | ||||
|             .groupBy('project_name', 'environment') | ||||
|             .orderBy('total_size', 'desc') | ||||
|             .limit(limit); | ||||
| 
 | ||||
|         return rows.map((row) => ({ | ||||
|             project: row.project_name, | ||||
|             environment: row.environment, | ||||
|             size: Number(row.total_size), | ||||
|         })); | ||||
|         return result.map( | ||||
|             (row: { | ||||
|                 project_name: string; | ||||
|                 environment: string; | ||||
|                 total_size: string; | ||||
|             }) => ({ | ||||
|                 project: row.project_name, | ||||
|                 environment: row.environment, | ||||
|                 size: Number(row.total_size), | ||||
|             }), | ||||
|         ); | ||||
|     } | ||||
| 
 | ||||
|     async getLargestFeatureEnvironments( | ||||
|         limit: number, | ||||
|     ): Promise<Array<{ feature: string; environment: string; size: number }>> { | ||||
|         const { rows } = await this.db.raw(` | ||||
|             WITH FeatureSizes AS ( | ||||
|                 SELECT | ||||
|                     feature_name, | ||||
|                     environment, | ||||
|                     SUM(pg_column_size(constraints) + pg_column_size(variants) + pg_column_size(parameters)) AS total_size | ||||
|                 FROM | ||||
|                     feature_strategies | ||||
|                 GROUP BY | ||||
|                     feature_name, | ||||
|                     environment | ||||
|             ) | ||||
|             SELECT | ||||
|                 feature_name, | ||||
|                 environment, | ||||
|                 total_size | ||||
|             FROM | ||||
|                 FeatureSizes | ||||
|             ORDER BY | ||||
|                 total_size DESC | ||||
|             LIMIT ${limit} | ||||
|         `);
 | ||||
|         const result = await this.db('feature_strategies') | ||||
|             .select('feature_name', 'environment') | ||||
|             .sum({ | ||||
|                 total_size: this.db.raw( | ||||
|                     'pg_column_size(constraints) + pg_column_size(variants) + pg_column_size(parameters)', | ||||
|                 ), | ||||
|             }) | ||||
|             .groupBy('feature_name', 'environment') | ||||
|             .orderBy('total_size', 'desc') | ||||
|             .limit(limit); | ||||
| 
 | ||||
|         return rows.map((row) => ({ | ||||
|             feature: row.feature_name, | ||||
|             environment: row.environment, | ||||
|             size: Number(row.total_size), | ||||
|         })); | ||||
|         return result.map( | ||||
|             (row: { | ||||
|                 feature_name: string; | ||||
|                 environment: string; | ||||
|                 total_size: string; | ||||
|             }) => ({ | ||||
|                 feature: row.feature_name, | ||||
|                 environment: row.environment, | ||||
|                 size: Number(row.total_size), | ||||
|             }), | ||||
|         ); | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user