packages feed

okf-core-0.3.0.0: test/fixtures/profiles/conditional-fields.dhall

let okf = ../../../dhall/package.dhall

let Profile = okf.defaults.Profile

let TypeRule = okf.defaults.TypeRule

let FieldRule = okf.defaults.FieldRule

let NestedFieldRule = okf.defaults.NestedFieldRule

let Cardinality = okf.Cardinality

let condition = \(field : Text) -> \(hasValue : List Text) -> { field, hasValue }

let decision =
      TypeRule::{
      , type = "Decision Record"
      , frontmatter =
        { required =
          [ FieldRule::{
            , field = "status"
            , allowedValues = [ "active", "superseded" ]
            , cardinality = Cardinality.Scalar
            }
          , FieldRule::{
            , field = "supersededBy"
            , cardinality = Cardinality.Scalar
            , when = Some (condition "status" [ "superseded" ])
            }
          ]
        , recommended = [] : List FieldRule.Type
        }
      }

let postgresql =
      TypeRule::{
      , type = "PostgreSQL Derivation"
      , frontmatter =
        { required =
          [ FieldRule::{
            , field = "derivationKind"
            , allowedValues = [ "projection", "operational" ]
            , cardinality = Cardinality.Scalar
            }
          , FieldRule::{
            , field = "sourceQuery"
            , cardinality = Cardinality.Scalar
            , when = Some (condition "derivationKind" [ "projection" ])
            }
          ]
        , recommended =
          [ FieldRule::{
            , field = "runbook"
            , cardinality = Cardinality.Scalar
            , when = Some (condition "derivationKind" [ "operational" ])
            }
          ]
        }
      }

let reviewed =
      TypeRule::{
      , type = "Reviewed Concept"
      , frontmatter =
        { required =
          [ okf.mk.FieldRule.recordList
              "reviews"
              { required =
                [ NestedFieldRule::{
                  , field = "kind"
                  , allowedValues = [ "human", "model" ]
                  , cardinality = Cardinality.Scalar
                  }
                , NestedFieldRule::{
                  , field = "reviewer"
                  , cardinality = Cardinality.Scalar
                  }
                , NestedFieldRule::{
                  , field = "provider"
                  , cardinality = Cardinality.Scalar
                  , when = Some (condition "kind" [ "model" ])
                  }
                , NestedFieldRule::{
                  , field = "model"
                  , cardinality = Cardinality.Scalar
                  , when = Some (condition "kind" [ "model" ])
                  }
                , NestedFieldRule::{
                  , field = "effort"
                  , allowedValues = [ "low", "medium", "high", "xhigh" ]
                  , cardinality = Cardinality.Scalar
                  , when = Some (condition "kind" [ "model" ])
                  }
                ]
              , recommended = [] : List NestedFieldRule.Type
              }
          ]
        , recommended = [] : List FieldRule.Type
        }
      }

in  Profile::{
    , name = "conditional-fields"
    , allowUnknownTypes = False
    , frontmatter =
      { required = [ okf.mk.FieldRule.plain "type" ]
      , recommended = [] : List FieldRule.Type
      }
    , types = [ decision, postgresql, reviewed ]
    }