1use forte_macros::forte_doc;
2use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4
5pub use doc_db::DbRequest;
6
7#[derive(Serialize, Deserialize, Clone)]
8pub struct WorkerProjectManifest {
9 pub code_version: u64,
10 pub custom_domain: Option<String>,
11 #[serde(default = "default_static_cache_state")]
12 pub static_cache_state: String,
13 #[serde(default)]
14 pub pending_code_version: Option<u64>,
15 #[serde(default)]
18 pub storage: Option<WorkerProjectStorage>,
19}
20
21#[derive(Serialize, Deserialize, Clone, PartialEq, Eq)]
25pub struct WorkerR2Credential {
26 pub access_key_id: String,
27 pub secret_ciphertext: String,
28}
29
30#[derive(Serialize, Deserialize, Clone, PartialEq, Eq)]
38pub struct WorkerProjectStorage {
39 pub account_id: String,
40 pub region: String,
41 pub credential: WorkerR2Credential,
42 pub private_object_storage_bucket: String,
43 pub public_object_storage_bucket: String,
44 pub public_object_storage_base_url: String,
46 pub config_version: u64,
49}
50
51pub const STATIC_CACHE_STATE_ACTIVE: &str = "active";
52pub const STATIC_CACHE_STATE_PRE_PURGE: &str = "pre_purge";
53pub const STATIC_CACHE_STATE_ACTIVATING: &str = "activating";
54
55fn default_static_cache_state() -> String {
56 STATIC_CACHE_STATE_ACTIVE.to_string()
57}
58
59#[forte_doc]
60pub struct WorkerManifestDoc {
61 pub manifest_version: u64,
62 pub project_manifests: HashMap<String, WorkerProjectManifest>,
63}
64
65#[derive(Serialize, Deserialize, Clone, PartialEq, Eq)]
69pub struct WorkerHostnameCert {
70 pub project_id: String,
71 pub cert_pem: String,
72 pub key_ciphertext: String,
73 pub not_after_epoch_seconds: i64,
74}
75
76#[forte_doc]
80pub struct WorkerCertManifestDoc {
81 pub cert_version: u64,
82 pub certs: HashMap<String, WorkerHostnameCert>,
83}
84
85#[forte_doc]
86pub struct WorkerHostStatusDoc {
87 #[sk]
88 pub host_id: String,
89 pub addr: String,
90 pub active_image_ref: Option<String>,
91 pub reported_at: i64,
92}