ff_backend_sqlite/queries/
budget.rs1pub(crate) const INSERT_DEDUP_PLACEHOLDER_SQL: &str = "\
23 INSERT INTO ff_budget_usage_dedup \
24 (partition_key, dedup_key, outcome_json, applied_at_ms, expires_at_ms) \
25 VALUES (?, ?, '{}', ?, ?) \
26 ON CONFLICT (partition_key, dedup_key) DO NOTHING \
27 RETURNING applied_at_ms";
28
29pub(crate) const SELECT_DEDUP_OUTCOME_SQL: &str = "\
30 SELECT outcome_json FROM ff_budget_usage_dedup \
31 WHERE partition_key = ? AND dedup_key = ?";
32
33pub(crate) const UPDATE_DEDUP_OUTCOME_SQL: &str = "\
34 UPDATE ff_budget_usage_dedup SET outcome_json = ? \
35 WHERE partition_key = ? AND dedup_key = ?";
36
37pub(crate) const INSERT_BUDGET_POLICY_SQL: &str = "\
43 INSERT INTO ff_budget_policy \
44 (partition_key, budget_id, policy_json, scope_type, scope_id, \
45 enforcement_mode, breach_count, soft_breach_count, \
46 last_breach_at_ms, last_breach_dim, next_reset_at_ms, \
47 created_at_ms, updated_at_ms) \
48 VALUES (?, ?, ?, ?, ?, ?, 0, 0, NULL, NULL, \
49 CASE WHEN ? > 0 THEN ? + ? ELSE NULL END, \
50 ?, ?) \
51 ON CONFLICT (partition_key, budget_id) DO NOTHING \
52 RETURNING created_at_ms";
53
54pub(crate) const SELECT_BUDGET_POLICY_ROW_SQL: &str = "\
55 SELECT policy_json FROM ff_budget_policy \
56 WHERE partition_key = ? AND budget_id = ?";
57
58pub(crate) const UPDATE_BUDGET_HARD_BREACH_SQL: &str = "\
59 UPDATE ff_budget_policy \
60 SET breach_count = breach_count + 1, \
61 last_breach_at_ms = ?, \
62 last_breach_dim = ?, \
63 updated_at_ms = ? \
64 WHERE partition_key = ? AND budget_id = ?";
65
66pub(crate) const UPDATE_BUDGET_SOFT_BREACH_SQL: &str = "\
67 UPDATE ff_budget_policy \
68 SET soft_breach_count = soft_breach_count + 1, \
69 updated_at_ms = ? \
70 WHERE partition_key = ? AND budget_id = ?";
71
72pub(crate) const UPDATE_BUDGET_RESET_SQL: &str = "\
75 UPDATE ff_budget_policy \
76 SET last_breach_at_ms = NULL, \
77 last_breach_dim = NULL, \
78 updated_at_ms = ?, \
79 next_reset_at_ms = CASE WHEN ? > 0 THEN ? + ? ELSE NULL END \
80 WHERE partition_key = ? AND budget_id = ? \
81 RETURNING next_reset_at_ms";
82
83pub(crate) const SELECT_BUDGET_STATUS_SQL: &str = "\
84 SELECT scope_type, scope_id, enforcement_mode, \
85 breach_count, soft_breach_count, \
86 last_breach_at_ms, last_breach_dim, \
87 next_reset_at_ms, created_at_ms, \
88 policy_json \
89 FROM ff_budget_policy \
90 WHERE partition_key = ? AND budget_id = ?";
91
92pub(crate) const INSERT_USAGE_ROW_SQL: &str = "\
95 INSERT INTO ff_budget_usage \
96 (partition_key, budget_id, dimensions_key, current_value, updated_at_ms) \
97 VALUES (?, ?, ?, 0, ?) \
98 ON CONFLICT (partition_key, budget_id, dimensions_key) DO NOTHING";
99
100pub(crate) const SELECT_USAGE_ROW_SQL: &str = "\
101 SELECT current_value FROM ff_budget_usage \
102 WHERE partition_key = ? AND budget_id = ? AND dimensions_key = ?";
103
104pub(crate) const UPDATE_USAGE_INCREMENT_SQL: &str = "\
105 UPDATE ff_budget_usage \
106 SET current_value = current_value + ?, updated_at_ms = ? \
107 WHERE partition_key = ? AND budget_id = ? AND dimensions_key = ?";
108
109pub(crate) const UPDATE_USAGE_ZERO_ALL_SQL: &str = "\
110 UPDATE ff_budget_usage \
111 SET current_value = 0, last_reset_at_ms = ?, updated_at_ms = ? \
112 WHERE partition_key = ? AND budget_id = ?";
113
114pub(crate) const SELECT_ALL_USAGE_ROWS_SQL: &str = "\
115 SELECT dimensions_key, current_value FROM ff_budget_usage \
116 WHERE partition_key = ? AND budget_id = ?";