Stored Transformation
Stored transformation detail
Inspect version history, edit inputs, and save a new version without overwriting prior records.
def v($k): .[$k].value // null;
def trim:
gsub("^\\s+|\\s+$"; "");
def clean_text:
tostring | gsub("\\s+"; " ") | trim;
def gql_line($key; $value):
if $value == null or $value == "" then "" else " " + $key + " : " + ($value | @json) + "\n" end;
def province_from_postal_code($cp):
if $cp | startswith("28") then "Madrid" else null end;
def ac_from_postal_code($cp):
if $cp | startswith("28") then "Comunidad de Madrid" else null end;
def parsed_address:
(v("address")) as $a
| if ($a == null) or (($a | type) != "string") or (($a | clean_text) == "") then
null
else
($a | clean_text | gsub("\\.$"; "")) as $raw
| if ($raw | test("\\b\\d{5}\\b")) then
($raw | capture("^(?<streetAddress>.*?)[,.;]?\\s*(?<postalCode>\\d{5})\\s+(?<municipality>[^,.;]+)")) as $m
| {
streetAddress: ($m.streetAddress | clean_text | gsub("[,.;]$"; "")),
postalCode: $m.postalCode,
municipality: ($m.municipality | clean_text),
province: province_from_postal_code($m.postalCode),
autonomousCommunity: ac_from_postal_code($m.postalCode),
country: "España"
}
| with_entries(select(.value != null and .value != ""))
else
{
streetAddress: $raw,
postalCode: "28232",
municipality: "Las Rozas",
province: "Madrid",
autonomousCommunity: "Comunidad de Madrid",
country: "España"
}
end
end;
def parsed_coords:
(.location.value.coordinates // null) as $c
| if ($c | type) == "array" and ($c | length) >= 2 then
{long: $c[0], lat: $c[1]}
else
{}
end;
(v("description")) as $desc
| (.id // null) as $externalId
| (parsed_address) as $addr
| (parsed_coords) as $coords
| ((($addr // {}) + $coords)) as $loc
| {
query: "mutation nuevo_hotel { createHotel(dti: \"ROZAS_DE_MADRID_LAS\" input: { object: { externalId: " + ($externalId|@json) + " name: { value: " + (($desc // "Hotel PID")|@json) + " lang: \"es\" } hasLocation: { object: {" + (gql_line("streetAddress"; $loc.streetAddress)) + (gql_line("postalCode"; $loc.postalCode)) + (gql_line("municipality"; $loc.municipality)) + (gql_line("province"; $loc.province)) + (gql_line("autonomousCommunity"; $loc.autonomousCommunity)) + (gql_line("country"; $loc.country)) + (gql_line("long"; $loc.long)) + (gql_line("lat"; $loc.lat)) + "}}}}) { uri } }",
operationName: "nuevo_hotel"
}
null