38 lines
1.2 KiB
TypeScript
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
|
|
});
|
|
}
|
|
}
|