Skip to main content
Glama
project.mapper.ts2.5 kB
/** * @fileoverview Project mapper * * Maps between DeepSource API models and domain Project aggregates. */ import { Project } from '../../domain/aggregates/project/project.aggregate.js'; import { DeepSourceProject } from '../../models/projects.js'; import { ProjectRepository, ProjectStatus, VcsProvider, ProjectConfiguration, } from '../../domain/aggregates/project/project.types.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: DeepSourceProject): Project { const repository: ProjectRepository = { url: apiProject.repository.url, provider: apiProject.repository.provider as VcsProvider, login: apiProject.repository.login, isPrivate: apiProject.repository.isPrivate, }; // Determine status based on activation const status: ProjectStatus = 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: Project): { key: string; name: string; repository: ProjectRepository; configuration: ProjectConfiguration; status: ProjectStatus; createdAt: Date; updatedAt: Date; } { 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: DeepSourceProject[]): Project[] { 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, };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sapientpants/deepsource-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server