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, ) {} async findComponent(name: string): Promise { return this.versioningModel.findOne({ componentName: name }); } async updateComponent( name: string, createdAt: string, version: SemanticVersionDto, ): Promise { 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; } }