harmos_domain/operations/storage/
write_schema.rs1use super::POLICY;
22use crate::MemorySize;
23use crate::model::storage::codec::{Nested, product};
24use crate::model::storage::{MutationId, SchemaInput, StorageCursor};
25use crate::operations::{ReplaySafety, Visibility};
26
27product!(WriteSchema {
32 mutation: Nested<MutationId> => 1,
33 schema: Nested<SchemaInput> => 2,
34});
35
36crate::declare!(WriteSchema {
37 id: "storage.write_schema",
38 version: 1,
39 policy: POLICY,
40 response: StorageCursor,
41 visibility: Visibility::Host,
42 replay: ReplaySafety::Idempotent,
43});
44
45#[derive(Clone, Debug, PartialEq, Eq)]
51pub struct WriteSchema {
52 pub mutation: MutationId,
53 pub schema: SchemaInput,
54}
55
56impl MemorySize for WriteSchema {
63 fn memory_size(&self) -> usize {
64 std::mem::size_of::<Self>()
65 .saturating_add(self.mutation.memory_size().saturating_sub(std::mem::size_of_val(&self.mutation)))
66 .saturating_add(self.schema.memory_size().saturating_sub(std::mem::size_of_val(&self.schema)))
67 }
68}
69
70