provisioning/schemas/platform/common/helpers_test3.ncl

31 lines
981 B
Text
Raw Normal View History

# Test: Manual merge without fold
{
# Hardcoded merge for 2-field record
merge_manual = fun base override =>
let base_fields = std.record.fields base in
let has_field_0 = std.array.length base_fields > 0 in
let has_field_1 = std.array.length base_fields > 1 in
let key0 = if has_field_0 then std.array.at 0 base_fields else "" in
let key1 = if has_field_1 then std.array.at 1 base_fields else "" in
let val0 = if has_field_0 then std.record.get key0 base else null in
let val1 = if has_field_1 then std.record.get key1 base else null in
let result0 = if has_field_0 then
if std.record.has_field key0 override then
{"%{key0}" = std.record.get key0 override}
else
{"%{key0}" = val0}
else {} in
let result1 = if has_field_1 then
if std.record.has_field key1 override then
{"%{key1}" = std.record.get key1 override}
else
{"%{key1}" = val1}
else {} in
result0 & result1,
}