in kong/kong/db/schema/metaschema.lua [415:466]
local check_fields = function(schema, errors)
local transformations = schema.transformations
if transformations then
for i = 1, #transformations do
local transformation = transformations[i]
for j = 1, #transformation.input do
local input = transformation.input[j]
if not has_schema_field(schema, input) then
errors.transformations = errors.transformations or {}
errors.transformations.input = errors.transformations.input or {}
errors.transformations.input[i] = errors.transformations.input[i] or {}
errors.transformations.input[i][j] = fmt("invalid field name: %s", input)
end
end
if transformation.needs then
for j = 1, #transformation.needs do
local need = transformation.needs[j]
if not has_schema_field(schema, need) then
errors.transformations = errors.transformations or {}
errors.transformations.needs = errors.transformations.needs or {}
errors.transformations.needs[i] = errors.transformations.needs[i] or {}
errors.transformations.needs[i][j] = fmt("invalid field name: %s", need)
end
end
end
end
end
for i = 1, #schema.fields do
local item = schema.fields[i]
if type(item) ~= "table" then
errors["fields"] = meta_errors.FIELDS_ARRAY
break
end
local k = next(item)
if not k then
errors["fields"] = meta_errors.FIELD_EMPTY
break
end
local field = item[k]
if type(field) == "table" then
check_field(k, field, errors)
else
errors[k] = meta_errors.TABLE:format(k)
end
end
if next(errors) then
return nil, errors
end
return true
end