mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	Merge pull request #1145 from Unleash/feat/update-health-report
feat: update health report
This commit is contained in:
		
						commit
						7ec9672a5c
					
				| @ -11,7 +11,14 @@ import { | |||||||
| } from '../types/stores/project-store'; | } from '../types/stores/project-store'; | ||||||
| import { DEFAULT_ENV } from '../util/constants'; | import { DEFAULT_ENV } from '../util/constants'; | ||||||
| 
 | 
 | ||||||
| const COLUMNS = ['id', 'name', 'description', 'created_at', 'health']; | const COLUMNS = [ | ||||||
|  |     'id', | ||||||
|  |     'name', | ||||||
|  |     'description', | ||||||
|  |     'created_at', | ||||||
|  |     'health', | ||||||
|  |     'updated_at', | ||||||
|  | ]; | ||||||
| const TABLE = 'projects'; | const TABLE = 'projects'; | ||||||
| 
 | 
 | ||||||
| class ProjectStore implements IProjectStore { | class ProjectStore implements IProjectStore { | ||||||
| @ -74,7 +81,7 @@ class ProjectStore implements IProjectStore { | |||||||
|     async updateHealth(healthUpdate: IProjectHealthUpdate): Promise<void> { |     async updateHealth(healthUpdate: IProjectHealthUpdate): Promise<void> { | ||||||
|         await this.db(TABLE) |         await this.db(TABLE) | ||||||
|             .where({ id: healthUpdate.id }) |             .where({ id: healthUpdate.id }) | ||||||
|             .update({ health: healthUpdate.health }); |             .update({ health: healthUpdate.health, updated_at: new Date() }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     async create(project: IProjectInsert): Promise<IProject> { |     async create(project: IProjectInsert): Promise<IProject> { | ||||||
| @ -197,6 +204,7 @@ class ProjectStore implements IProjectStore { | |||||||
|             description: row.description, |             description: row.description, | ||||||
|             createdAt: row.created_at, |             createdAt: row.created_at, | ||||||
|             health: row.health || 100, |             health: row.health || 100, | ||||||
|  |             updatedAt: row.updated_at || new Date(), | ||||||
|         }; |         }; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -72,6 +72,7 @@ export default class ProjectHealthService { | |||||||
|             name: project.name, |             name: project.name, | ||||||
|             description: project.description, |             description: project.description, | ||||||
|             health: project.health, |             health: project.health, | ||||||
|  |             updatedAt: project.updatedAt, | ||||||
|             environments, |             environments, | ||||||
|             features, |             features, | ||||||
|             members, |             members, | ||||||
|  | |||||||
| @ -143,6 +143,7 @@ export interface IProjectOverview { | |||||||
|     members: number; |     members: number; | ||||||
|     version: number; |     version: number; | ||||||
|     health: number; |     health: number; | ||||||
|  |     updatedAt?: Date; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export interface IProjectHealthReport extends IProjectOverview { | export interface IProjectHealthReport extends IProjectOverview { | ||||||
| @ -309,6 +310,7 @@ export interface IProject { | |||||||
|     description: string; |     description: string; | ||||||
|     health?: number; |     health?: number; | ||||||
|     createdAt?: Date; |     createdAt?: Date; | ||||||
|  |     updatedAt?: Date; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export interface IProjectWithCount extends IProject { | export interface IProjectWithCount extends IProject { | ||||||
|  | |||||||
| @ -5,6 +5,7 @@ export interface IProjectInsert { | |||||||
|     id: string; |     id: string; | ||||||
|     name: string; |     name: string; | ||||||
|     description: string; |     description: string; | ||||||
|  |     updatedAt?: Date; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export interface IProjectArchived { | export interface IProjectArchived { | ||||||
|  | |||||||
							
								
								
									
										12
									
								
								src/migrations/20211130142314-add-updated-at-to-projects.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/migrations/20211130142314-add-updated-at-to-projects.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | |||||||
|  | 'use strict'; | ||||||
|  | 
 | ||||||
|  | exports.up = function (db, callback) { | ||||||
|  |     db.runSql( | ||||||
|  |         'ALTER TABLE projects ADD COLUMN "updated_at" TIMESTAMP WITH TIME ZONE DEFAULT now();', | ||||||
|  |         callback, | ||||||
|  |     ); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | exports.down = function (db, callback) { | ||||||
|  |     db.runSql('ALTER TABLE projects DROP COLUMN "updated_at";', callback); | ||||||
|  | }; | ||||||
| @ -302,3 +302,16 @@ test('Sorts environments correctly if sort order is equal', async () => { | |||||||
|         expect(feature.environments[1].name).toBe(envTwo); |         expect(feature.environments[1].name).toBe(envTwo); | ||||||
|     }); |     }); | ||||||
| }); | }); | ||||||
|  | 
 | ||||||
|  | test('Update update_at when setHealth runs', async () => { | ||||||
|  |     await app.services.projectHealthService.setHealthRating(); | ||||||
|  |     await app.request | ||||||
|  |         .get('/api/admin/projects/default/health-report') | ||||||
|  |         .expect(200) | ||||||
|  |         .expect('Content-Type', /json/) | ||||||
|  |         .expect((res) => { | ||||||
|  |             let now = new Date().getTime(); | ||||||
|  |             let updatedAt = new Date(res.body.updatedAt).getTime(); | ||||||
|  |             expect(now - updatedAt).toBeLessThan(5000); | ||||||
|  |         }); | ||||||
|  | }); | ||||||
|  | |||||||
| @ -39,6 +39,7 @@ test('should create new project', async () => { | |||||||
|     expect(project.name).toEqual(ret.name); |     expect(project.name).toEqual(ret.name); | ||||||
|     expect(project.description).toEqual(ret.description); |     expect(project.description).toEqual(ret.description); | ||||||
|     expect(ret.createdAt).toBeTruthy(); |     expect(ret.createdAt).toBeTruthy(); | ||||||
|  |     expect(ret.updatedAt).toBeTruthy(); | ||||||
|     expect(exists).toBe(true); |     expect(exists).toBe(true); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user