rxqlite_notification/
lib.rs1#![deny(warnings)]
3#![allow(non_camel_case_types)]
4use serde::{Serialize, Deserialize};
5
6pub mod ffi_3_14_0 {
9 pub const SQLITE_DELETE: i32 = 9;
11 pub const SQLITE_INSERT: i32 = 18;
12 pub const SQLITE_UPDATE: i32 = 23;
13}
14use ffi_3_14_0 as ffi;
15
16#[derive(Serialize, Deserialize, Clone, Copy, Debug, Eq, PartialEq)]
18#[repr(i32)]
19#[non_exhaustive]
20#[allow(clippy::upper_case_acronyms)]
21pub enum Action {
22 UNKNOWN = -1,
24 SQLITE_DELETE = ffi::SQLITE_DELETE,
26 SQLITE_INSERT = ffi::SQLITE_INSERT,
28 SQLITE_UPDATE = ffi::SQLITE_UPDATE,
30}
31
32impl From<i32> for Action {
33 #[inline]
34 fn from(code: i32) -> Action {
35 match code {
36 ffi::SQLITE_DELETE => Action::SQLITE_DELETE,
37 ffi::SQLITE_INSERT => Action::SQLITE_INSERT,
38 ffi::SQLITE_UPDATE => Action::SQLITE_UPDATE,
39 _ => Action::UNKNOWN,
40 }
41 }
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize)]
45pub enum Notification {
46 Update {
47 action: Action,
48 database: String,
49 table: String,
50 row_id: i64,
51 },
52}
53
54impl Notification {
55 pub fn table(&self)->Option<&String> {
56 match self {
57 Self::Update {
58 table,
59 ..
60 }=>Some(table),
61 }
63 }
64}
65