///|
/// One application role connection metadata record.
#derive(ToJson(fields(typ(rename="type"))), FromJson(fields(typ(rename="type"))), Debug)
pub(all) struct ApplicationRoleConnectionMetadata {
typ : ApplicationRoleConnectionMetadataType
key : String
name : String
name_localizations : Nullable[Map[String, String]]?
description : String
description_localizations : Nullable[Map[String, String]]?
}
///|
/// The comparison used for an application role connection metadata record.
#derive(Eq, Debug)
#non_exhaustive
pub(all) enum ApplicationRoleConnectionMetadataType {
IntegerLessThanOrEqual
IntegerGreaterThanOrEqual
IntegerEqual
IntegerNotEqual
DatetimeLessThanOrEqual
DatetimeGreaterThanOrEqual
BooleanEqual
BooleanNotEqual
Unknown(Int32)
}
///|
/// The Discord integer value of this `ApplicationRoleConnectionMetadataType`.
pub fn ApplicationRoleConnectionMetadataType::to_int(
self : ApplicationRoleConnectionMetadataType,
) -> Int32 {
match self {
IntegerLessThanOrEqual => 1
IntegerGreaterThanOrEqual => 2
IntegerEqual => 3
IntegerNotEqual => 4
DatetimeLessThanOrEqual => 5
DatetimeGreaterThanOrEqual => 6
BooleanEqual => 7
BooleanNotEqual => 8
Unknown(value) => value
}
}
///|
/// The `ApplicationRoleConnectionMetadataType` for its Discord integer value; unknown values become `Unknown(n)`.
pub fn ApplicationRoleConnectionMetadataType::from_int(
value : Int32,
) -> ApplicationRoleConnectionMetadataType {
match value {
1 => IntegerLessThanOrEqual
2 => IntegerGreaterThanOrEqual
3 => IntegerEqual
4 => IntegerNotEqual
5 => DatetimeLessThanOrEqual
6 => DatetimeGreaterThanOrEqual
7 => BooleanEqual
8 => BooleanNotEqual
value => Unknown(value)
}
}
///|
/// Encodes the `ApplicationRoleConnectionMetadataType` as its Discord integer value.
pub impl ToJson for ApplicationRoleConnectionMetadataType with fn to_json(self) {
Json::number(self.to_int().to_double())
}
///|
/// Decodes the `ApplicationRoleConnectionMetadataType` from a JSON number; unknown values become `Unknown(n)`.
pub impl @json.FromJson for ApplicationRoleConnectionMetadataType with fn from_json(
json,
path,
) {
match json {
Number(value, ..) =>
ApplicationRoleConnectionMetadataType::from_int(value.to_int())
_ =>
raise JsonDecodeError(
(path, "expected application role connection metadata type (number)"),
)
}
}