Files
aman-backend/src/versioning/versioning.service.ts
2022-10-22 20:25:55 +02:00

52 lines
1.5 KiB
TypeScript

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;
}
}