Fixed Railway projectId fetch

X-Lovable-Edit-ID: edt-ef3db142-71bc-4e8a-8bb2-c39dfbc758c8
Co-authored-by: domfelipe <53182096+domfelipe@users.noreply.github.com>
This commit is contained in:
gpt-engineer-app[bot] 2026-04-23 19:10:13 +00:00
commit a8df36d6bf
3 changed files with 31 additions and 16 deletions

View file

@ -197,11 +197,11 @@ export async function setHermesSuspended(opts: {
});
}
/** Busca o environmentId do primeiro deployment de um serviço. Útil quando vps_pool_id está null. */
export async function getServiceEnvironmentId(opts: {
/** Busca env+project IDs do primeiro deployment de um serviço. Útil quando vps_pool_id está null. */
export async function getServiceContext(opts: {
token: string;
serviceId: string;
}): Promise<string | null> {
}): Promise<{ environmentId: string | null; projectId: string | null }> {
const query = `
query Service($id: String!) {
service(id: $id) {
@ -216,10 +216,21 @@ export async function getServiceEnvironmentId(opts: {
service: { projectId: string; deployments: { edges: { node: { environmentId: string } }[] } };
}>(query, { id: opts.serviceId }, opts.token);
if (res.errors?.length) {
console.error("getServiceEnvironmentId errors:", JSON.stringify(res.errors));
return null;
console.error("getServiceContext errors:", JSON.stringify(res.errors));
return { environmentId: null, projectId: null };
}
return res.data?.service?.deployments?.edges?.[0]?.node?.environmentId ?? null;
return {
environmentId: res.data?.service?.deployments?.edges?.[0]?.node?.environmentId ?? null,
projectId: res.data?.service?.projectId ?? null,
};
}
/** @deprecated use getServiceContext */
export async function getServiceEnvironmentId(opts: {
token: string;
serviceId: string;
}): Promise<string | null> {
return (await getServiceContext(opts)).environmentId;
}
/** Apaga o webhook do Telegram para que o Hermes assuma via polling. */

View file

@ -5,7 +5,7 @@
import { createClient } from "https://esm.sh/@supabase/supabase-js@2.45.4";
import { corsHeaders } from "../_shared/cors.ts";
import { setHermesSuspended, getServiceEnvironmentId } from "../_shared/railway.ts";
import { setHermesSuspended, getServiceContext } from "../_shared/railway.ts";
const SUPABASE_URL = Deno.env.get("SUPABASE_URL")!;
const SUPABASE_SERVICE_ROLE_KEY = Deno.env.get("SUPABASE_SERVICE_ROLE_KEY")!;
@ -67,14 +67,16 @@ Deno.serve(async (req) => {
environmentId = pool?.railway_environment_id ?? null;
projectId = pool?.railway_project_id ?? undefined;
}
if (!environmentId) {
environmentId = await getServiceEnvironmentId({
if (!environmentId || !projectId) {
const ctx = await getServiceContext({
token: RAILWAY_API_TOKEN,
serviceId: agent.railway_service_id,
});
environmentId = environmentId ?? ctx.environmentId;
projectId = projectId ?? ctx.projectId ?? undefined;
}
if (!environmentId) {
return jsonResponse(500, { error: "could not resolve railway environmentId" });
if (!environmentId || !projectId) {
return jsonResponse(500, { error: "could not resolve railway environmentId/projectId" });
}
try {

View file

@ -6,7 +6,7 @@
import { createClient } from "https://esm.sh/@supabase/supabase-js@2.45.4";
import { corsHeaders } from "../_shared/cors.ts";
import { setHermesSuspended, getServiceEnvironmentId } from "../_shared/railway.ts";
import { setHermesSuspended, getServiceContext } from "../_shared/railway.ts";
const SUPABASE_URL = Deno.env.get("SUPABASE_URL")!;
const SUPABASE_SERVICE_ROLE_KEY = Deno.env.get("SUPABASE_SERVICE_ROLE_KEY")!;
@ -69,14 +69,16 @@ Deno.serve(async (req) => {
environmentId = pool?.railway_environment_id ?? null;
projectId = pool?.railway_project_id ?? undefined;
}
if (!environmentId) {
environmentId = await getServiceEnvironmentId({
if (!environmentId || !projectId) {
const ctx = await getServiceContext({
token: RAILWAY_API_TOKEN,
serviceId: agent.railway_service_id,
});
environmentId = environmentId ?? ctx.environmentId;
projectId = projectId ?? ctx.projectId ?? undefined;
}
if (!environmentId) {
return jsonResponse(500, { error: "could not resolve railway environmentId" });
if (!environmentId || !projectId) {
return jsonResponse(500, { error: "could not resolve railway environmentId/projectId" });
}
try {