Skip to main content
Glama
project.repository.ts2.27 kB
/** * @fileoverview Project repository interface * * This module defines the repository interface for the Project aggregate. */ import { IRepository } from '../../shared/repository.interface.js'; import { Project } from './project.aggregate.js'; import { ProjectKey } from '../../../types/branded.js'; /** * Repository interface for Project aggregates * * Provides methods for persisting and retrieving Project aggregates. * * @example * ```typescript * class InMemoryProjectRepository implements IProjectRepository { * private projects = new Map<ProjectKey, Project>(); * * async findByKey(key: ProjectKey): Promise<Project | null> { * return this.projects.get(key) || null; * } * * async findAll(): Promise<Project[]> { * return Array.from(this.projects.values()); * } * * async save(project: Project): Promise<void> { * this.projects.set(project.key, project); * } * * async delete(key: ProjectKey): Promise<void> { * this.projects.delete(key); * } * } * ``` */ export interface IProjectRepository extends IRepository<Project, ProjectKey> { /** * Finds a project by its unique key * * @param key - The project key * @returns The project if found, null otherwise */ findByKey(_key: ProjectKey): Promise<Project | null>; /** * Finds all projects * * @returns All projects in the repository */ findAll(): Promise<Project[]>; /** * Finds all active projects * * @returns All projects with ACTIVE status */ findActive(): Promise<Project[]>; /** * Finds projects by repository provider * * @param provider - The VCS provider (e.g., 'GITHUB', 'GITLAB') * @returns Projects using the specified provider */ findByProvider(_provider: string): Promise<Project[]>; /** * Checks if a project exists with the given key * * @param key - The project key to check * @returns True if the project exists, false otherwise */ exists(_key: ProjectKey): Promise<boolean>; /** * Counts the total number of projects * * @returns The total project count */ count(): Promise<number>; /** * Counts the number of active projects * * @returns The active project count */ countActive(): Promise<number>; }

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