Files
trueref/src/lib/server/mappers/search-result.mapper.ts
2026-03-27 02:23:01 +01:00

38 lines
1.2 KiB
TypeScript

import {
LibrarySearchResult,
SnippetRepositoryRef,
SnippetSearchResult
} from '$lib/server/models/search-result.js';
import { RepositoryMapper } from '$lib/server/mappers/repository.mapper.js';
import { RepositoryVersionMapper } from '$lib/server/mappers/repository-version.mapper.js';
import { SnippetMapper } from '$lib/server/mappers/snippet.mapper.js';
import { RepositoryEntity } from '$lib/server/models/repository.js';
import { RepositoryVersionEntity } from '$lib/server/models/repository-version.js';
import { SnippetEntity } from '$lib/server/models/snippet.js';
export class SearchResultMapper {
static snippetFromEntity(
entity: SnippetEntity,
repository: { id: string; title: string },
score: number
): SnippetSearchResult {
return new SnippetSearchResult({
snippet: SnippetMapper.fromEntity(entity),
score,
repository: new SnippetRepositoryRef(repository)
});
}
static libraryFromEntity(
repositoryEntity: RepositoryEntity,
versionEntities: RepositoryVersionEntity[],
score: number
): LibrarySearchResult {
return new LibrarySearchResult({
repository: RepositoryMapper.fromEntity(repositoryEntity),
versions: versionEntities.map((version) => RepositoryVersionMapper.fromEntity(version)),
score
});
}
}