mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	feat: schema for paginated applications (#6309)
This commit is contained in:
		
							parent
							
								
									ff70a92956
								
							
						
					
					
						commit
						81ab77cf7c
					
				
							
								
								
									
										57
									
								
								src/lib/openapi/spec/applications-query-parameters.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								src/lib/openapi/spec/applications-query-parameters.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,57 @@ | |||||||
|  | import { FromQueryParams } from '../util/from-query-params'; | ||||||
|  | 
 | ||||||
|  | export const applicationsQueryParameters = [ | ||||||
|  |     { | ||||||
|  |         name: 'query', | ||||||
|  |         schema: { | ||||||
|  |             type: 'string', | ||||||
|  |             example: 'first_app', | ||||||
|  |         }, | ||||||
|  |         description: 'The search query for the application name', | ||||||
|  |         in: 'query', | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |         name: 'offset', | ||||||
|  |         schema: { | ||||||
|  |             type: 'string', | ||||||
|  |             example: '50', | ||||||
|  |         }, | ||||||
|  |         description: | ||||||
|  |             'The number of applications to skip when returning a page. By default it is set to 0.', | ||||||
|  |         in: 'query', | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |         name: 'limit', | ||||||
|  |         schema: { | ||||||
|  |             type: 'string', | ||||||
|  |             example: '50', | ||||||
|  |         }, | ||||||
|  |         description: | ||||||
|  |             'The number of applications to return in a page. By default it is set to 1000.', | ||||||
|  |         in: 'query', | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |         name: 'sortBy', | ||||||
|  |         schema: { | ||||||
|  |             type: 'string', | ||||||
|  |             example: 'type', | ||||||
|  |         }, | ||||||
|  |         description: | ||||||
|  |             'The field to sort the results by. By default it is set to "appName".', | ||||||
|  |         in: 'query', | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |         name: 'sortOrder', | ||||||
|  |         schema: { | ||||||
|  |             type: 'string', | ||||||
|  |             example: 'desc', | ||||||
|  |         }, | ||||||
|  |         description: | ||||||
|  |             'The sort order for the sortBy. By default it is det to "asc".', | ||||||
|  |         in: 'query', | ||||||
|  |     }, | ||||||
|  | ] as const; | ||||||
|  | 
 | ||||||
|  | export type ApplicationsQueryParameters = Partial< | ||||||
|  |     FromQueryParams<typeof applicationsQueryParameters> | ||||||
|  | >; | ||||||
| @ -7,8 +7,14 @@ export const applicationsSchema = { | |||||||
|     additionalProperties: false, |     additionalProperties: false, | ||||||
|     description: |     description: | ||||||
|         'An object containing a list of applications that have connected to Unleash via an SDK.', |         'An object containing a list of applications that have connected to Unleash via an SDK.', | ||||||
|  |     required: ['total', 'applications'], | ||||||
|     type: 'object', |     type: 'object', | ||||||
|     properties: { |     properties: { | ||||||
|  |         total: { | ||||||
|  |             type: 'integer', | ||||||
|  |             example: 50, | ||||||
|  |             description: 'The total number of project applications.', | ||||||
|  |         }, | ||||||
|         applications: { |         applications: { | ||||||
|             description: |             description: | ||||||
|                 'The list of applications that have connected to this Unleash instance.', |                 'The list of applications that have connected to this Unleash instance.', | ||||||
|  | |||||||
| @ -23,6 +23,7 @@ import { | |||||||
|     applicationOverviewSchema, |     applicationOverviewSchema, | ||||||
| } from '../../openapi/spec/application-overview-schema'; | } from '../../openapi/spec/application-overview-schema'; | ||||||
| import { OpenApiService } from '../../services'; | import { OpenApiService } from '../../services'; | ||||||
|  | import { applicationsQueryParameters } from '../../openapi/spec/applications-query-parameters'; | ||||||
| 
 | 
 | ||||||
| class MetricsController extends Controller { | class MetricsController extends Controller { | ||||||
|     private logger: Logger; |     private logger: Logger; | ||||||
| @ -104,6 +105,7 @@ class MetricsController extends Controller { | |||||||
|                     summary: 'Get all applications', |                     summary: 'Get all applications', | ||||||
|                     description: |                     description: | ||||||
|                         'Returns all applications registered with Unleash. Applications can be created via metrics reporting or manual creation', |                         'Returns all applications registered with Unleash. Applications can be created via metrics reporting or manual creation', | ||||||
|  |                     parameters: [...applicationsQueryParameters], | ||||||
|                     operationId: 'getApplications', |                     operationId: 'getApplications', | ||||||
|                     responses: { |                     responses: { | ||||||
|                         200: createResponseSchema('applicationsSchema'), |                         200: createResponseSchema('applicationsSchema'), | ||||||
| @ -193,7 +195,8 @@ class MetricsController extends Controller { | |||||||
|             query, |             query, | ||||||
|             extractUserIdFromUser(user), |             extractUserIdFromUser(user), | ||||||
|         ); |         ); | ||||||
|         res.json({ applications }); |         // todo: change to total with pagination later
 | ||||||
|  |         res.json({ applications, total: applications.length }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     async getApplication( |     async getApplication( | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user