36 lines
930 B
TypeScript
36 lines
930 B
TypeScript
import { EmbeddingProfile, EmbeddingProfileEntity } from '$lib/server/models/embedding-profile.js';
|
|
|
|
function parseConfig(config: Record<string, unknown> | string | null): Record<string, unknown> {
|
|
if (!config) {
|
|
return {};
|
|
}
|
|
|
|
if (typeof config === 'string') {
|
|
try {
|
|
const parsed = JSON.parse(config);
|
|
return parsed && typeof parsed === 'object' ? (parsed as Record<string, unknown>) : {};
|
|
} catch {
|
|
return {};
|
|
}
|
|
}
|
|
|
|
return config;
|
|
}
|
|
|
|
export class EmbeddingProfileMapper {
|
|
static fromEntity(entity: EmbeddingProfileEntity): EmbeddingProfile {
|
|
return new EmbeddingProfile({
|
|
id: entity.id,
|
|
providerKind: entity.provider_kind,
|
|
title: entity.title,
|
|
enabled: Boolean(entity.enabled),
|
|
isDefault: Boolean(entity.is_default),
|
|
model: entity.model,
|
|
dimensions: entity.dimensions,
|
|
config: parseConfig(entity.config),
|
|
createdAt: entity.created_at,
|
|
updatedAt: entity.updated_at
|
|
});
|
|
}
|
|
}
|