deepsource-mcp-server
Version:
Model Context Protocol server for DeepSource
61 lines • 2.14 kB
JavaScript
/**
* @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