cronback_lib/types/
ids.rs

1use crate::model::define_model_id;
2
3define_model_id! {
4    @prefix = "prj",
5    @no_owner,
6    @proto = proto::common::ProjectId,
7    pub struct ProjectId;
8}
9
10define_model_id! {
11    @prefix = "trig",
12    @proto = proto::common::TriggerId,
13    pub struct TriggerId;
14}
15
16define_model_id! {
17    @prefix = "run",
18    @proto = proto::common::RunId,
19    pub struct RunId;
20}
21
22define_model_id! {
23    @prefix = "att",
24    @proto = proto::common::AttemptId,
25    pub struct AttemptId;
26}
27
28#[cfg(test)]
29mod tests {
30    use super::*;
31
32    #[test]
33    fn test_id_sharding() -> Result<(), crate::model::ModelIdError> {
34        let project = ProjectId::generate();
35        let project_shard = project.shard();
36
37        let trigger = TriggerId::generate(&project);
38        assert_eq!(trigger.shard(), project_shard);
39        Ok(())
40    }
41}