Packages
caffeine_lang
4.6.5
6.3.1
6.3.0
6.2.2
6.2.1
6.2.0
6.1.2
6.1.1
6.1.0
6.0.0
5.6.0
5.5.0
5.4.4
5.4.3
5.4.2
5.4.1
5.4.0
5.3.0
5.2.0
5.1.1
5.1.0
5.0.12
5.0.11
5.0.10
5.0.8
5.0.7
5.0.6
5.0.5
5.0.4
5.0.1
5.0.0
4.10.0
4.9.0
4.8.3
4.8.2
4.8.1
4.8.0
4.7.9
4.7.8
4.7.7
4.7.6
4.7.5
4.6.7
4.6.6
4.6.5
4.6.4
4.6.3
4.6.2
4.6.0
4.5.1
4.5.0
4.4.4
4.4.3
4.4.1
4.4.0
4.3.7
4.3.6
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.0.2
1.0.1
0.1.0
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.2
0.0.1
A compiler for generating reliability artifacts from service expectation definitions.
Current section
Files
Jump to
Current section
Files
src/caffeine_lang/linker/artifacts.gleam
import caffeine_lang/types.{type AcceptedTypes}
import gleam/dict
/// Information about a parameter including its type and description.
pub type ParamInfo {
ParamInfo(type_: AcceptedTypes, description: String)
}
/// A reusable artifact template with named parameters.
pub type Artifact {
Artifact(
type_: ArtifactType,
description: String,
params: dict.Dict(String, ParamInfo),
)
}
/// Types of supported artifacts.
pub type ArtifactType {
SLO
DependencyRelations
}
/// Extracts just the types from artifact params, discarding descriptions.
/// Useful when downstream code only needs type information.
@internal
pub fn params_to_types(
params: dict.Dict(String, ParamInfo),
) -> dict.Dict(String, AcceptedTypes) {
params
|> dict.map_values(fn(_, param_info) { param_info.type_ })
}
/// Converts an ArtifactType to its corresponding string representation.
@internal
pub fn artifact_type_to_string(type_: ArtifactType) -> String {
case type_ {
SLO -> "SLO"
DependencyRelations -> "DependencyRelations"
}
}
/// Parses a string into an ArtifactType, returning Error(Nil) for unknown types.
@internal
pub fn parse_artifact_type(raw: String) -> Result(ArtifactType, Nil) {
case raw {
"SLO" -> Ok(SLO)
"DependencyRelations" -> Ok(DependencyRelations)
_ -> Error(Nil)
}
}
/// Types of dependency relationships between expectations.
pub type DependencyRelationType {
/// If dependency down, dependent down.
Hard
/// Dependent can continue operating, either unscathed or within a degraded state if deendency down.
Soft
}
/// Parses a string into a DependencyRelationType, returning Error(Nil) for unknown types.
@internal
pub fn parse_relation_type(s: String) -> Result(DependencyRelationType, Nil) {
case s {
"hard" -> Ok(Hard)
"soft" -> Ok(Soft)
_ -> Error(Nil)
}
}
/// Converts a DependencyRelationType to its string representation.
@internal
pub fn relation_type_to_string(rt: DependencyRelationType) -> String {
case rt {
Hard -> "hard"
Soft -> "soft"
}
}