@crazyrabbitltc/railway-mcp
Version:
Railway MCP Server - 146+ tools with 100% Railway API coverage, comprehensive MCP testing framework, and real infrastructure management through AI assistants. Enhanced version with enterprise features, based on original work by Jason Tan.
99 lines (98 loc) • 2.71 kB
JavaScript
export class DomainRepository {
client;
constructor(client) {
this.client = client;
}
async serviceDomainCreate(input) {
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(query, variables);
return response.serviceDomainCreate;
}
async serviceDomainDelete(id) {
const query = `
mutation serviceDomainDelete($id: String!) {
serviceDomainDelete(id: $id)
}
`;
const variables = { id };
const response = await this.client.request(query, variables);
return response.serviceDomainDelete;
}
async serviceDomainUpdate(input) {
const query = `
mutation serviceDomainUpdate($input: ServiceDomainUpdateInput!) {
serviceDomainUpdate(input: $input)
}
`;
const variables = { input };
const response = await this.client.request(query, variables);
return response.serviceDomainUpdate;
}
async domains(projectId, environmentId, serviceId) {
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(query, variables);
return response.domains;
}
async serviceDomainAvailable(domain) {
const query = `
query serviceDomainAvailable($domain: String!) {
serviceDomainAvailable(domain: $domain) {
available
message
}
}
`;
const variables = { domain };
const response = await this.client.request(query, variables);
return response.serviceDomainAvailable;
}
}