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}
16
17pub const STATIC_CACHE_STATE_ACTIVE: &str = "active";
18pub const STATIC_CACHE_STATE_PRE_PURGE: &str = "pre_purge";
19pub const STATIC_CACHE_STATE_ACTIVATING: &str = "activating";
20
21fn default_static_cache_state() -> String {
22 STATIC_CACHE_STATE_ACTIVE.to_string()
23}
24
25#[forte_doc]
26pub struct WorkerManifestDoc {
27 pub manifest_version: u64,
28 pub project_manifests: HashMap<String, WorkerProjectManifest>,
29}
30
31#[forte_doc]
32pub struct WorkerHostStatusDoc {
33 #[sk]
34 pub host_id: String,
35 pub addr: String,
36 pub active_image_ref: Option<String>,
37 pub reported_at: i64,
38}
39
40#[forte_doc]
41pub struct PresignBlockedDoc {
42 pub updated_epoch_hour: i64,
43 pub blocked_project_ids: Vec<String>,
44}
45
46#[forte_doc]
47pub struct PresignMintCountDoc {
48 #[pk]
49 pub project_id: String,
50 #[sk]
51 pub window_epoch_hour: i64,
52 #[sk]
53 pub writer_id: String,
54 pub minted: u64,
55}