summaryrefslogtreecommitdiff
path: root/sqlite.zig
diff options
context:
space:
mode:
authorGravatar Vincent Rischmann2020-12-28 00:34:38 +0100
committerGravatar Vincent Rischmann2020-12-30 00:09:30 +0100
commitfbc50cd7c658282f78dcb909bd41dd5e3b3e91e5 (patch)
treea2a4c7341c43064c8e08e12657580c5181dd463e /sqlite.zig
parentci: stop sending an email on failure (diff)
downloadzig-sqlite-fbc50cd7c658282f78dcb909bd41dd5e3b3e91e5.tar.gz
zig-sqlite-fbc50cd7c658282f78dcb909bd41dd5e3b3e91e5.tar.xz
zig-sqlite-fbc50cd7c658282f78dcb909bd41dd5e3b3e91e5.zip
remove the allocator from Db and Db.init
Diffstat (limited to 'sqlite.zig')
-rw-r--r--sqlite.zig39
1 files changed, 18 insertions, 21 deletions
diff --git a/sqlite.zig b/sqlite.zig
index 1deba55..3f2cd5a 100644
--- a/sqlite.zig
+++ b/sqlite.zig
@@ -33,16 +33,15 @@ fn isThreadSafe() bool {
33/// 33///
34/// // File database 34/// // File database
35/// var db: sqlite.Db = undefined; 35/// var db: sqlite.Db = undefined;
36/// try db.init(allocator, .{ .mode = { .File = "/tmp/data.db" } }); 36/// try db.init(.{ .mode = { .File = "/tmp/data.db" } });
37/// 37///
38/// // In memory database 38/// // In memory database
39/// var db: sqlite.Db = undefined; 39/// var db: sqlite.Db = undefined;
40/// try db.init(allocator, .{ .mode = { .Memory = {} } }); 40/// try db.init(.{ .mode = { .Memory = {} } });
41/// 41///
42pub const Db = struct { 42pub const Db = struct {
43 const Self = @This(); 43 const Self = @This();
44 44
45 allocator: *mem.Allocator,
46 db: *c.sqlite3, 45 db: *c.sqlite3,
47 46
48 /// Mode determines how the database will be opened. 47 /// Mode determines how the database will be opened.
@@ -57,9 +56,7 @@ pub const Db = struct {
57 }; 56 };
58 57
59 /// init creates a database with the provided `mode`. 58 /// init creates a database with the provided `mode`.
60 pub fn init(self: *Self, allocator: *mem.Allocator, options: InitOptions) !void { 59 pub fn init(self: *Self, options: InitOptions) !void {
61 self.allocator = allocator;
62
63 // Validate the threading mode 60 // Validate the threading mode
64 if (options.threading_mode != .SingleThread and !isThreadSafe()) { 61 if (options.threading_mode != .SingleThread and !isThreadSafe()) {
65 return error.CannotUseSingleThreadedSQLite; 62 return error.CannotUseSingleThreadedSQLite;
@@ -803,8 +800,8 @@ fn addTestData(db: *Db) !void {
803 800
804test "sqlite: db init" { 801test "sqlite: db init" {
805 var db: Db = undefined; 802 var db: Db = undefined;
806 try db.init(testing.allocator, initOptions()); 803 try db.init(initOptions());
807 try db.init(testing.allocator, .{}); 804 try db.init(.{});
808} 805}
809 806
810test "sqlite: db pragma" { 807test "sqlite: db pragma" {
@@ -812,7 +809,7 @@ test "sqlite: db pragma" {
812 defer arena.deinit(); 809 defer arena.deinit();
813 810
814 var db: Db = undefined; 811 var db: Db = undefined;
815 try db.init(testing.allocator, initOptions()); 812 try db.init(initOptions());
816 813
817 const foreign_keys = try db.pragma(usize, "foreign_keys", .{}, .{}); 814 const foreign_keys = try db.pragma(usize, "foreign_keys", .{}, .{});
818 testing.expect(foreign_keys != null); 815 testing.expect(foreign_keys != null);
@@ -841,7 +838,7 @@ test "sqlite: db pragma" {
841 838
842test "sqlite: statement exec" { 839test "sqlite: statement exec" {
843 var db: Db = undefined; 840 var db: Db = undefined;
844 try db.init(testing.allocator, initOptions()); 841 try db.init(initOptions());
845 try addTestData(&db); 842 try addTestData(&db);
846 843
847 // Test with a Blob struct 844 // Test with a Blob struct
@@ -868,7 +865,7 @@ test "sqlite: read a single user into a struct" {
868 defer arena.deinit(); 865 defer arena.deinit();
869 866
870 var db: Db = undefined; 867 var db: Db = undefined;
871 try db.init(testing.allocator, initOptions()); 868 try db.init(initOptions());
872 try addTestData(&db); 869 try addTestData(&db);
873 870
874 var stmt = try db.prepare("SELECT id, name, age, weight FROM user WHERE id = ?{usize}"); 871 var stmt = try db.prepare("SELECT id, name, age, weight FROM user WHERE id = ?{usize}");
@@ -911,7 +908,7 @@ test "sqlite: read all users into a struct" {
911 defer arena.deinit(); 908 defer arena.deinit();
912 909
913 var db: Db = undefined; 910 var db: Db = undefined;
914 try db.init(testing.allocator, initOptions()); 911 try db.init(initOptions());
915 try addTestData(&db); 912 try addTestData(&db);
916 913
917 var stmt = try db.prepare("SELECT id, name, age, weight FROM user"); 914 var stmt = try db.prepare("SELECT id, name, age, weight FROM user");
@@ -936,7 +933,7 @@ test "sqlite: read in an anonymous struct" {
936 defer arena.deinit(); 933 defer arena.deinit();
937 934
938 var db: Db = undefined; 935 var db: Db = undefined;
939 try db.init(testing.allocator, initOptions()); 936 try db.init(initOptions());
940 try addTestData(&db); 937 try addTestData(&db);
941 938
942 var stmt = try db.prepare("SELECT id, name, name, age, id, weight FROM user WHERE id = ?{usize}"); 939 var stmt = try db.prepare("SELECT id, name, name, age, id, weight FROM user WHERE id = ?{usize}");
@@ -970,7 +967,7 @@ test "sqlite: read in a Text struct" {
970 defer arena.deinit(); 967 defer arena.deinit();
971 968
972 var db: Db = undefined; 969 var db: Db = undefined;
973 try db.init(testing.allocator, initOptions()); 970 try db.init(initOptions());
974 try addTestData(&db); 971 try addTestData(&db);
975 972
976 var stmt = try db.prepare("SELECT id, name, age FROM user WHERE id = ?{usize}"); 973 var stmt = try db.prepare("SELECT id, name, age FROM user WHERE id = ?{usize}");
@@ -998,7 +995,7 @@ test "sqlite: read a single text value" {
998 defer arena.deinit(); 995 defer arena.deinit();
999 996
1000 var db: Db = undefined; 997 var db: Db = undefined;
1001 try db.init(testing.allocator, initOptions()); 998 try db.init(initOptions());
1002 try addTestData(&db); 999 try addTestData(&db);
1003 1000
1004 const types = &[_]type{ 1001 const types = &[_]type{
@@ -1051,7 +1048,7 @@ test "sqlite: read a single text value" {
1051 1048
1052test "sqlite: read a single integer value" { 1049test "sqlite: read a single integer value" {
1053 var db: Db = undefined; 1050 var db: Db = undefined;
1054 try db.init(testing.allocator, initOptions()); 1051 try db.init(initOptions());
1055 try addTestData(&db); 1052 try addTestData(&db);
1056 1053
1057 const types = &[_]type{ 1054 const types = &[_]type{
@@ -1083,7 +1080,7 @@ test "sqlite: read a single integer value" {
1083 1080
1084test "sqlite: read a single value into void" { 1081test "sqlite: read a single value into void" {
1085 var db: Db = undefined; 1082 var db: Db = undefined;
1086 try db.init(testing.allocator, initOptions()); 1083 try db.init(initOptions());
1087 try addTestData(&db); 1084 try addTestData(&db);
1088 1085
1089 const query = "SELECT age FROM user WHERE id = ?{usize}"; 1086 const query = "SELECT age FROM user WHERE id = ?{usize}";
@@ -1096,7 +1093,7 @@ test "sqlite: read a single value into void" {
1096 1093
1097test "sqlite: read a single value into bool" { 1094test "sqlite: read a single value into bool" {
1098 var db: Db = undefined; 1095 var db: Db = undefined;
1099 try db.init(testing.allocator, initOptions()); 1096 try db.init(initOptions());
1100 try addTestData(&db); 1097 try addTestData(&db);
1101 1098
1102 const query = "SELECT id FROM user WHERE id = ?{usize}"; 1099 const query = "SELECT id FROM user WHERE id = ?{usize}";
@@ -1111,7 +1108,7 @@ test "sqlite: read a single value into bool" {
1111 1108
1112test "sqlite: insert bool and bind bool" { 1109test "sqlite: insert bool and bind bool" {
1113 var db: Db = undefined; 1110 var db: Db = undefined;
1114 try db.init(testing.allocator, initOptions()); 1111 try db.init(initOptions());
1115 try addTestData(&db); 1112 try addTestData(&db);
1116 1113
1117 try db.exec("INSERT INTO article(id, author_id, is_published) VALUES(?{usize}, ?{usize}, ?{bool})", .{ 1114 try db.exec("INSERT INTO article(id, author_id, is_published) VALUES(?{usize}, ?{usize}, ?{bool})", .{
@@ -1132,7 +1129,7 @@ test "sqlite: insert bool and bind bool" {
1132 1129
1133test "sqlite: statement reset" { 1130test "sqlite: statement reset" {
1134 var db: Db = undefined; 1131 var db: Db = undefined;
1135 try db.init(testing.allocator, initOptions()); 1132 try db.init(initOptions());
1136 try addTestData(&db); 1133 try addTestData(&db);
1137 1134
1138 // Add data 1135 // Add data
@@ -1161,7 +1158,7 @@ test "sqlite: statement iterator" {
1161 var allocator = &arena.allocator; 1158 var allocator = &arena.allocator;
1162 1159
1163 var db: Db = undefined; 1160 var db: Db = undefined;
1164 try db.init(testing.allocator, initOptions()); 1161 try db.init(initOptions());
1165 try addTestData(&db); 1162 try addTestData(&db);
1166 1163
1167 // Cleanup first 1164 // Cleanup first