# NonEmptyId: ensures the `id` field of any record is a non-empty string.
# Apply as: `data | c.NonEmptyId` before merging with schema.
std.contract.custom (
  fun label =>
    fun value =>
      if !(std.record.has_field "id" value) then
        'Error { message = "record must have an 'id' field" }
      else if std.string.length value.id == 0 then
        'Error { message = "id must not be empty" }
      else
        'Ok value
)
