railway-mcp

by jason-tan-swe
Verified
import { RailwayApiClient } from '@/api/api-client.js'; import { ServiceDomain, ServiceDomainCreateInput, ServiceDomainUpdateInput, DomainAvailabilityResult, DomainsListResult } from '@/types.js'; export class DomainRepository { constructor(private client: RailwayApiClient) {} async serviceDomainCreate(input: ServiceDomainCreateInput): Promise<ServiceDomain> { const query = ` mutation serviceDomainCreate($input: ServiceDomainCreateInput!) { serviceDomainCreate(input: $input) { id createdAt deletedAt domain environmentId projectId serviceId suffix targetPort updatedAt } } `; const variables = { input }; const response = await this.client.request<{ serviceDomainCreate: ServiceDomain }>(query, variables); return response.serviceDomainCreate; } async serviceDomainDelete(id: string): Promise<boolean> { const query = ` mutation serviceDomainDelete($id: String!) { serviceDomainDelete(id: $id) } `; const variables = { id }; const response = await this.client.request<{ serviceDomainDelete: boolean }>(query, variables); return response.serviceDomainDelete; } async serviceDomainUpdate(input: ServiceDomainUpdateInput): Promise<boolean> { const query = ` mutation serviceDomainUpdate($input: ServiceDomainUpdateInput!) { serviceDomainUpdate(input: $input) } `; const variables = { input }; const response = await this.client.request<{ serviceDomainUpdate: boolean }>(query, variables); return response.serviceDomainUpdate; } async domains(projectId: string, environmentId: string, serviceId: string): Promise<DomainsListResult> { const query = ` query domains($projectId: String!, $environmentId: String!, $serviceId: String!) { domains( projectId: $projectId environmentId: $environmentId serviceId: $serviceId ) { customDomains { id createdAt deletedAt domain environmentId projectId serviceId targetPort updatedAt } serviceDomains { id createdAt deletedAt domain environmentId projectId serviceId suffix targetPort updatedAt } } } `; const variables = { projectId, environmentId, serviceId }; const response = await this.client.request<{ domains: DomainsListResult }>(query, variables); return response.domains; } async serviceDomainAvailable(domain: string): Promise<DomainAvailabilityResult> { const query = ` query serviceDomainAvailable($domain: String!) { serviceDomainAvailable(domain: $domain) { available message } } `; const variables = { domain }; const response = await this.client.request<{ serviceDomainAvailable: DomainAvailabilityResult }>(query, variables); return response.serviceDomainAvailable; } }