UNPKG

deepsource-mcp-server

Version:
61 lines 2.14 kB
/** * @fileoverview Project mapper * * Maps between DeepSource API models and domain Project aggregates. */ import { Project } from '../../domain/aggregates/project/project.aggregate.js'; /** * Maps a DeepSource API project to a domain Project aggregate * * @param apiProject - The API project model * @returns The domain Project aggregate */ export function mapProjectToDomain(apiProject) { const repository = { url: apiProject.repository.url, provider: apiProject.repository.provider, login: apiProject.repository.login, isPrivate: apiProject.repository.isPrivate, }; // Determine status based on activation const status = apiProject.repository.isActivated ? 'ACTIVE' : 'INACTIVE'; return Project.fromPersistence({ key: apiProject.key, name: apiProject.name, repository, configuration: { isActivated: apiProject.repository.isActivated, autoFix: false, // Default, as not provided by API pullRequestIntegration: true, // Default, as not provided by API issueReporting: true, // Default, as not provided by API }, status, createdAt: new Date(), // Not provided by API, use current date updatedAt: new Date(), // Not provided by API, use current date }); } /** * Maps a domain Project aggregate to persistence format * * @param project - The domain Project aggregate * @returns The persistence model */ export function mapProjectToPersistence(project) { return project.toPersistence(); } /** * Maps multiple API projects to domain aggregates * * @param apiProjects - Array of API project models * @returns Array of domain Project aggregates */ export function mapProjectsToDomainList(apiProjects) { return apiProjects.map((project) => mapProjectToDomain(project)); } // For backward compatibility, export a namespace with the old static methods export const ProjectMapper = { toDomain: mapProjectToDomain, toPersistence: mapProjectToPersistence, toDomainList: mapProjectsToDomainList, }; //# sourceMappingURL=project.mapper.js.map