fix: update remaining gaiia graphql status fields for object schema

Gaiia migrated all status fields from scalar enums to object types,
not just AccountStatus. Update BillingSubscription.status,
InventoryItem.status, and nested billingSubscriptions.status in the
accounts query to request { id name } subfields and extract the name
value in sync mappers.
This commit is contained in:
Graham McIntire 2026-02-13 16:16:00 -06:00
parent d603a12322
commit 1dbb8926ed
No known key found for this signature in database
3 changed files with 18 additions and 9 deletions

View file

@ -40,7 +40,10 @@ defmodule Towerops.Gaiia.Client do
edges {
node {
id
status
status {
id
name
}
}
}
}
@ -93,7 +96,10 @@ defmodule Towerops.Gaiia.Client do
edges {
node {
id
status
status {
id
name
}
ipAddressV4
model {
name
@ -127,7 +133,10 @@ defmodule Towerops.Gaiia.Client do
edges {
node {
id
status
status {
id
name
}
productVersion {
product {
name

View file

@ -79,7 +79,7 @@ defmodule Towerops.Gaiia.Sync do
defp map_account(node) do
subs = get_in(node, ["billingSubscriptions", "edges"]) || []
active_count = Enum.count(subs, &(&1["node"]["status"] == "Active"))
active_count = Enum.count(subs, &(get_in(&1, ["node", "status", "name"]) == "Active"))
%{
gaiia_id: node["id"],
@ -119,7 +119,7 @@ defmodule Towerops.Gaiia.Sync do
%{
gaiia_id: node["id"],
name: get_in(node, ["model", "name"]),
status: node["status"],
status: get_in(node, ["status", "name"]),
serial_number: nil,
mac_address: nil,
ip_address: node["ipAddressV4"],
@ -142,7 +142,7 @@ defmodule Towerops.Gaiia.Sync do
%{
gaiia_id: node["id"],
account_gaiia_id: get_in(node, ["entity", "id"]),
status: node["status"],
status: get_in(node, ["status", "name"]),
product_name: get_in(node, ["productVersion", "product", "name"]),
mrr_amount: mrr_amount,
currency: get_in(node, ["productVersion", "currency"]),

View file

@ -154,7 +154,7 @@ defmodule Towerops.Gaiia.SyncTest do
%{
"node" => %{
"id" => "sub-1",
"status" => "Active"
"status" => %{"id" => "sub-status-1", "name" => "Active"}
}
}
]
@ -208,7 +208,7 @@ defmodule Towerops.Gaiia.SyncTest do
%{
"node" => %{
"id" => "item-1",
"status" => "Active",
"status" => %{"id" => "inv-status-1", "name" => "Active"},
"ipAddressV4" => "10.0.0.1",
"model" => %{
"name" => "airFiber 5XHD",
@ -236,7 +236,7 @@ defmodule Towerops.Gaiia.SyncTest do
%{
"node" => %{
"id" => "sub-1",
"status" => "Active",
"status" => %{"id" => "sub-status-1", "name" => "Active"},
"productVersion" => %{
"product" => %{"name" => "100Mbps Unlimited"},
"price" => 7999,