angular-t9n
Version:
A translation tool for Angular i18n
84 lines (72 loc) • 2.66 kB
text/typescript
import { Body, Controller, Get, NotFoundException, Param, Put, Query } from '@nestjs/common';
import { LinkHelper } from '../link-helper';
import {
FilterableBuilder,
PaginationResponse,
SortableBuilder,
TargetUnitRequest,
TargetUnitResponse,
TranslationTargetUnit,
} from '../models';
import { TranslationTargetRegistry } from '../persistence';
export class TargetUnitsController {
private _targetUnitSortables = new SortableBuilder<TranslationTargetUnit>()
.addSortables('id', 'source', 'state')
.addSafeSortables('description', 'meaning', 'target')
.build();
private _targetUnitFilterables = new FilterableBuilder<TranslationTargetUnit>()
.addFilterables('id', 'description', 'meaning', 'source', 'target', 'state')
.build();
constructor(
private _translationTargetRegistry: TranslationTargetRegistry,
private _linkHelper: LinkHelper,
) {}
getPagination(
language: string,
queryParams: any,
): PaginationResponse<TranslationTargetUnit, TargetUnitResponse> {
const target = this._translationTargetRegistry.get(language);
if (!target) {
throw new NotFoundException('Target does not exist');
}
return new PaginationResponse({
query: queryParams,
entries: target.units,
responseMapper: (unit) => new TargetUnitResponse(target, unit, this._linkHelper),
urlFactory: (query) => this._linkHelper.targetUnits(target, query),
sortables: this._targetUnitSortables,
filterables: this._targetUnitFilterables,
});
}
getTargetUnit( language: string, id: string): TargetUnitResponse {
const target = this._translationTargetRegistry.get(language);
if (!target) {
throw new NotFoundException('Target does not exist');
}
const unit = target.unitMap.get(id);
if (!unit) {
throw new NotFoundException('Unit does not exist');
}
return new TargetUnitResponse(target, unit, this._linkHelper);
}
updateTargetUnit(
language: string,
id: string,
body: TargetUnitRequest,
): TargetUnitResponse {
const target = this._translationTargetRegistry.get(language);
if (!target) {
throw new NotFoundException('Target does not exist');
}
const unit = target.unitMap.get(id);
if (!unit) {
throw new NotFoundException('Unit does not exist');
}
const translatedUnit = target.translateUnit(unit, body);
return new TargetUnitResponse(target, translatedUnit, this._linkHelper);
}
}