launchdarkly_server_sdk/stores/change_set.rs
1use launchdarkly_server_sdk_evaluation::{Flag, Segment};
2
3use crate::fdv2::model::{ChangeSetKind, Selector};
4
5use super::store_types::StorageItem;
6
7/// A single flag or segment change within a change set.
8#[derive(Clone, Debug)]
9pub enum ItemChange {
10 /// A flag was upserted or deleted.
11 Flag {
12 /// The flag key.
13 key: String,
14 /// The new flag value or a tombstone.
15 item: StorageItem<Flag>,
16 },
17 /// A segment was upserted or deleted.
18 Segment {
19 /// The segment key.
20 key: String,
21 /// The new segment value or a tombstone.
22 item: StorageItem<Segment>,
23 },
24}
25
26/// A batch of flag and segment changes delivered by a data source.
27#[derive(Debug)]
28pub struct ChangeSet {
29 /// Whether this is a full payload, an incremental update, or empty.
30 pub kind: ChangeSetKind,
31 /// The individual item changes.
32 pub changes: Vec<ItemChange>,
33 /// The selector to echo back on the next request.
34 pub selector: Selector,
35}