diff options
| author | 2020-12-28 00:34:38 +0100 | |
|---|---|---|
| committer | 2020-12-30 00:09:30 +0100 | |
| commit | fbc50cd7c658282f78dcb909bd41dd5e3b3e91e5 (patch) | |
| tree | a2a4c7341c43064c8e08e12657580c5181dd463e /sqlite.zig | |
| parent | ci: stop sending an email on failure (diff) | |
| download | zig-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.zig | 39 |
1 files changed, 18 insertions, 21 deletions
| @@ -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 | /// |
| 42 | pub const Db = struct { | 42 | pub 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 | ||
| 804 | test "sqlite: db init" { | 801 | test "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 | ||
| 810 | test "sqlite: db pragma" { | 807 | test "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 | ||
| 842 | test "sqlite: statement exec" { | 839 | test "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 | ||
| 1052 | test "sqlite: read a single integer value" { | 1049 | test "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 | ||
| 1084 | test "sqlite: read a single value into void" { | 1081 | test "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 | ||
| 1097 | test "sqlite: read a single value into bool" { | 1094 | test "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 | ||
| 1112 | test "sqlite: insert bool and bind bool" { | 1109 | test "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 | ||
| 1133 | test "sqlite: statement reset" { | 1130 | test "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 |