/
vtab_apida_ext.zig
39 lines (28 loc) · 995 Bytes
/
vtab_apida_ext.zig
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
const std = @import("std");
const sqlite = @import("sqlite");
const c = sqlite.c;
const curl = @import("curl.zig");
const apida = @import("vtab_apida.zig");
const name = "apida";
pub const loadable_extension = true;
var module_allocator: std.heap.GeneralPurposeAllocator(.{}) = undefined;
var module_context: sqlite.vtab.ModuleContext = undefined;
pub export fn sqlite3_apida_init(db: *c.sqlite3, err_msg: [*c][*c]u8, api: *c.sqlite3_api_routines) callconv(.C) c_int {
_ = err_msg;
c.sqlite3_api = api;
curl.globalInit();
defer curl.globalCleanup();
const VirtualTableType = sqlite.vtab.VirtualTable(name, apida.Table);
module_allocator = std.heap.GeneralPurposeAllocator(.{}){};
module_context = sqlite.vtab.ModuleContext{
.allocator = module_allocator.allocator(),
};
const result = c.sqlite3_create_module_v2(
db,
name,
&VirtualTableType.module,
&module_context,
null,
);
return result;
}