temporalio_common_wasm/
versioning_override.rs1use crate::{
2 WorkerDeploymentVersion,
3 protos::temporal::api::{
4 deployment::v1::WorkerDeploymentVersion as ProtoWorkerDeploymentVersion,
5 workflow::v1::{VersioningOverride as ProtoVersioningOverride, versioning_override},
6 },
7};
8
9#[derive(Debug, Clone, PartialEq, Eq)]
14#[non_exhaustive]
15pub enum VersioningOverride {
16 Pinned(WorkerDeploymentVersion),
18 AutoUpgrade,
20 OneTime(WorkerDeploymentVersion),
25}
26
27impl From<VersioningOverride> for ProtoVersioningOverride {
28 fn from(value: VersioningOverride) -> Self {
29 let version = |value: WorkerDeploymentVersion| ProtoWorkerDeploymentVersion {
30 deployment_name: value.deployment_name,
31 build_id: value.build_id,
32 };
33 match value {
34 VersioningOverride::Pinned(value) => Self {
35 r#override: Some(versioning_override::Override::Pinned(
36 versioning_override::PinnedOverride {
37 behavior: versioning_override::PinnedOverrideBehavior::Pinned as i32,
38 version: Some(version(value)),
39 },
40 )),
41 ..Default::default()
42 },
43 VersioningOverride::AutoUpgrade => Self {
44 r#override: Some(versioning_override::Override::AutoUpgrade(true)),
45 ..Default::default()
46 },
47 VersioningOverride::OneTime(value) => Self {
48 r#override: Some(versioning_override::Override::OneTime(
49 versioning_override::OneTimeOverride {
50 target_deployment_version: Some(version(value)),
51 },
52 )),
53 ..Default::default()
54 },
55 }
56 }
57}