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 rendered_html_cache_bucket: String,
47 pub config_version: u64,
50}
51
52pub const STATIC_CACHE_STATE_ACTIVE: &str = "active";
53pub const STATIC_CACHE_STATE_PRE_PURGE: &str = "pre_purge";
54pub const STATIC_CACHE_STATE_ACTIVATING: &str = "activating";
55
56fn default_static_cache_state() -> String {
57 STATIC_CACHE_STATE_ACTIVE.to_string()
58}
59
60#[forte_doc]
61pub struct WorkerManifestDoc {
62 pub manifest_version: u64,
63 pub project_manifests: HashMap<String, WorkerProjectManifest>,
64}
65
66#[derive(Serialize, Deserialize, Clone, PartialEq, Eq)]
70pub struct WorkerHostnameCert {
71 pub project_id: String,
72 pub cert_pem: String,
73 pub key_ciphertext: String,
74 pub not_after_epoch_seconds: i64,
75}
76
77#[forte_doc]
81pub struct WorkerCertManifestDoc {
82 pub cert_version: u64,
83 pub certs: HashMap<String, WorkerHostnameCert>,
84}
85
86#[forte_doc]
87pub struct WorkerHostStatusDoc {
88 #[sk]
89 pub host_id: String,
90 pub addr: String,
91 pub active_image_ref: Option<String>,
92 pub reported_at: i64,
93}