52 lines
1.5 KiB
TypeScript
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;
|
|
}
|
|
}
|