Skip to main content

temporalio_common_wasm/
worker.rs

1//! WASM-safe worker-related shared types exposed through workflow APIs.
2
3use crate::protos::{coresdk, temporal};
4use std::str::FromStr;
5
6/// Identifies a specific version of a worker deployment.
7#[derive(Clone, Debug, Eq, PartialEq, Hash)]
8pub struct WorkerDeploymentVersion {
9    /// Name of the deployment
10    pub deployment_name: String,
11    /// Build ID for the worker.
12    pub build_id: String,
13}
14
15impl WorkerDeploymentVersion {
16    /// Returns true if both the deployment name and build ID are empty.
17    pub fn is_empty(&self) -> bool {
18        self.deployment_name.is_empty() && self.build_id.is_empty()
19    }
20}
21
22impl FromStr for WorkerDeploymentVersion {
23    type Err = ();
24
25    fn from_str(s: &str) -> Result<Self, Self::Err> {
26        match s.split_once('.') {
27            Some((name, build_id)) => Ok(WorkerDeploymentVersion {
28                deployment_name: name.to_owned(),
29                build_id: build_id.to_owned(),
30            }),
31            _ => Err(()),
32        }
33    }
34}
35
36impl From<WorkerDeploymentVersion> for coresdk::common::WorkerDeploymentVersion {
37    fn from(v: WorkerDeploymentVersion) -> coresdk::common::WorkerDeploymentVersion {
38        coresdk::common::WorkerDeploymentVersion {
39            deployment_name: v.deployment_name,
40            build_id: v.build_id,
41        }
42    }
43}
44
45impl From<coresdk::common::WorkerDeploymentVersion> for WorkerDeploymentVersion {
46    fn from(v: coresdk::common::WorkerDeploymentVersion) -> WorkerDeploymentVersion {
47        WorkerDeploymentVersion {
48            deployment_name: v.deployment_name,
49            build_id: v.build_id,
50        }
51    }
52}
53
54impl From<temporal::api::deployment::v1::WorkerDeploymentVersion> for WorkerDeploymentVersion {
55    fn from(v: temporal::api::deployment::v1::WorkerDeploymentVersion) -> Self {
56        Self {
57            deployment_name: v.deployment_name,
58            build_id: v.build_id,
59        }
60    }
61}