introduce a performance backend
This commit is contained in:
		
							
								
								
									
										51
									
								
								src/versioning/versioning.service.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								src/versioning/versioning.service.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | ||||
| import { Injectable } from '@nestjs/common'; | ||||
| import { InjectModel } from '@nestjs/mongoose'; | ||||
| import { Model } from 'mongoose'; | ||||
| import { SemanticVersionDto } from './dto/semanticversion.dto'; | ||||
| import { Versioning, VersioningDocument } from './versioning.model'; | ||||
|  | ||||
| @Injectable() | ||||
| export class VersioningService { | ||||
|   constructor( | ||||
|     @InjectModel('versioning') | ||||
|     private readonly versioningModel: Model<VersioningDocument>, | ||||
|   ) {} | ||||
|  | ||||
|   async findComponent(name: string): Promise<Versioning> { | ||||
|     return this.versioningModel.findOne({ componentName: name }); | ||||
|   } | ||||
|  | ||||
|   async updateComponent( | ||||
|     name: string, | ||||
|     createdAt: string, | ||||
|     version: SemanticVersionDto, | ||||
|   ): Promise<void> { | ||||
|     return this.versioningModel.deleteOne({ componentName: name }).then(() => { | ||||
|       this.versioningModel.create({ | ||||
|         componentName: name, | ||||
|         createdAt, | ||||
|         versionMain: version.main, | ||||
|         versionMajor: version.major, | ||||
|         versionMinor: version.minor, | ||||
|       }); | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   static newerVersion( | ||||
|     reference: SemanticVersionDto, | ||||
|     version: SemanticVersionDto, | ||||
|   ): boolean { | ||||
|     // check special cases for the main part | ||||
|     if (reference.main < version.main) return true; | ||||
|     if (reference.main > version.main) return false; | ||||
|  | ||||
|     // main versions are equal | ||||
|     // check the special cases for the major part | ||||
|     if (reference.major < version.major) return true; | ||||
|     if (reference.major > version.major) return false; | ||||
|  | ||||
|     // major versions are equal | ||||
|     // check if the minor versions increased | ||||
|     return reference.minor < version.minor; | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user