Skip to main content
Glama
test-case.entity.ts2.77 kB
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn, Index, } from 'typeorm'; import { MCPServerEntity } from './mcp-server.entity'; export enum TestStatus { PENDING = 'pending', RUNNING = 'running', PASSED = 'passed', FAILED = 'failed', SKIPPED = 'skipped', } @Entity('test_cases') @Index(['serverId', 'name'], { unique: true }) @Index(['status']) @Index(['tags']) export class TestCaseEntity { @PrimaryGeneratedColumn('uuid') id: string; @Column({ type: 'varchar', length: 255 }) name: string; @Column({ type: 'varchar', length: 255 }) serverName: string; @Column({ type: 'text', nullable: true }) description?: string; @Column({ type: 'varchar', length: 255 }) toolName: string; @Column({ type: 'jsonb' }) input: any; @Column({ type: 'jsonb', nullable: true }) expectedOutput?: any; @Column({ type: 'jsonb', nullable: true }) actualOutput?: any; @Column({ type: 'enum', enum: TestStatus, default: TestStatus.PENDING, }) status: TestStatus; @Column({ type: 'text', nullable: true }) errorMessage?: string; @Column({ type: 'int', nullable: true }) executionTime?: number; // 执行时间(毫秒) @Column({ type: 'timestamp', nullable: true }) lastRun?: Date; @Column({ type: 'int', default: 0 }) runCount: number; @Column({ type: 'int', default: 0 }) passCount: number; @Column({ type: 'int', default: 0 }) failCount: number; @Column({ type: 'jsonb', nullable: true }) tags?: string[]; @Column({ type: 'int', default: 0 }) priority: number; // 优先级,数字越大优先级越高 @Column({ type: 'boolean', default: true }) enabled: boolean; @Column({ type: 'jsonb', nullable: true }) config?: { timeout?: number; retries?: number; skipOnFailure?: boolean; [key: string]: any; }; @Column({ type: 'jsonb', nullable: true }) assertions?: { type: 'equals' | 'contains' | 'regex' | 'custom'; field?: string; value?: any; message?: string; }[]; @Column({ type: 'uuid' }) serverId: string; @ManyToOne(() => MCPServerEntity, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'serverId' }) server: MCPServerEntity; @CreateDateColumn() createdAt: Date; @UpdateDateColumn() updatedAt: Date; // 虚拟属性:成功率 get successRate(): number { if (this.runCount === 0) return 0; return (this.passCount / this.runCount) * 100; } // 虚拟属性:是否可以运行 get canRun(): boolean { return this.enabled && this.status !== TestStatus.RUNNING; } // 虚拟属性:最后运行状态 get lastRunStatus(): string { if (!this.lastRun) return 'never'; return this.status; } }

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/zaizaizhao/mcp-swagger-server'

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