-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathlib.rs
93 lines (81 loc) · 1.9 KB
/
lib.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#![no_std]
#![feature(vec_into_raw_parts)]
#![allow(internal_features)]
#![feature(core_intrinsics)]
#![feature(error_in_core)]
#![feature(assert_matches)]
extern crate alloc;
use core::ffi::{c_char, c_int};
use sqlite::ResultCode;
use sqlite_nostd as sqlite;
mod bucket_priority;
mod checkpoint;
mod crud_vtab;
mod diff;
mod error;
mod ext;
mod fix035;
mod json_merge;
mod kv;
mod macros;
mod migrations;
mod operations;
mod operations_vtab;
mod schema;
mod sync_local;
mod sync_types;
mod util;
mod uuid;
mod version;
mod view_admin;
mod views;
mod vtab_util;
#[no_mangle]
pub extern "C" fn sqlite3_powersync_init(
db: *mut sqlite::sqlite3,
_err_msg: *mut *mut c_char,
api: *mut sqlite::api_routines,
) -> c_int {
sqlite::EXTENSION_INIT2(api);
let result = init_extension(db);
return if let Err(code) = result {
code as c_int
} else {
ResultCode::OK as c_int
};
}
fn init_extension(db: *mut sqlite::sqlite3) -> Result<(), ResultCode> {
crate::version::register(db)?;
crate::views::register(db)?;
crate::uuid::register(db)?;
crate::diff::register(db)?;
crate::json_merge::register(db)?;
crate::view_admin::register(db)?;
crate::checkpoint::register(db)?;
crate::kv::register(db)?;
crate::schema::register(db)?;
crate::operations_vtab::register(db)?;
crate::crud_vtab::register(db)?;
Ok(())
}
extern "C" {
#[cfg(feature = "static")]
#[allow(non_snake_case)]
pub fn sqlite3_auto_extension(
xEntryPoint: Option<
extern "C" fn(
*mut sqlite::sqlite3,
*mut *mut c_char,
*mut sqlite::api_routines,
) -> c_int,
>,
) -> ::core::ffi::c_int;
}
#[cfg(feature = "static")]
#[no_mangle]
pub extern "C" fn powersync_init_static() -> c_int {
unsafe {
let f = sqlite3_powersync_init;
return sqlite3_auto_extension(Some(f));
}
}