1mod field_at;
2mod meta;
3mod util;
4mod xsv;
5mod xsv_reader;
6
7use crate::{
8 meta::{xsv_debug, xsv_version},
10 xsv::XsvTable,
11 xsv_reader::XsvReaderTable,
12};
13use sqlite_loadable::prelude::*;
14use sqlite_loadable::{define_scalar_function, define_virtual_table, FunctionFlags, Result};
15
16#[sqlite_entrypoint]
17pub fn sqlite3_xsv_init(db: *mut sqlite3) -> Result<()> {
18 let comma = b',';
19 let tab = b'\t';
20
21 define_scalar_function(
22 db,
23 "xsv_version",
24 0,
25 xsv_version,
26 FunctionFlags::DETERMINISTIC,
27 )?;
28 define_scalar_function(db, "xsv_debug", 0, xsv_debug, FunctionFlags::DETERMINISTIC)?;
29
30 define_virtual_table::<XsvTable>(db, "xsv", None)?;
31 define_virtual_table::<XsvTable>(db, "csv", Some(comma))?;
32 define_virtual_table::<XsvTable>(db, "tsv", Some(tab))?;
33
34 define_virtual_table::<XsvReaderTable>(db, "xsv_reader", None)?;
35 define_virtual_table::<XsvReaderTable>(db, "csv_reader", Some(comma))?;
36 define_virtual_table::<XsvReaderTable>(db, "tsv_reader", Some(tab))?;
37
38 Ok(())
45}