summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sqlite.zig25
1 files changed, 24 insertions, 1 deletions
diff --git a/sqlite.zig b/sqlite.zig
index 9ded620..b911e0e 100644
--- a/sqlite.zig
+++ b/sqlite.zig
@@ -166,6 +166,12 @@ pub const Db = struct {
166 }; 166 };
167 } 167 }
168 168
169 /// getLastInsertRowID returns the last inserted rowid.
170 pub fn getLastInsertRowID(self: *Self) i64 {
171 const rowid = c.sqlite3_last_insert_rowid(self.db);
172 return rowid;
173 }
174
169 /// pragmaAlloc is like `pragma` but can allocate memory. 175 /// pragmaAlloc is like `pragma` but can allocate memory.
170 /// 176 ///
171 /// Useful when the pragma command returns text, for example: 177 /// Useful when the pragma command returns text, for example:
@@ -941,7 +947,7 @@ const test_users = &[_]TestUser{
941 .{ .name = "José", .id = 60, .age = 40, .weight = 240.2 }, 947 .{ .name = "José", .id = 60, .age = 40, .weight = 240.2 },
942}; 948};
943 949
944fn addTestData(db: *Db) !void { 950fn createTestTables(db: *Db) !void {
945 const AllDDL = &[_][]const u8{ 951 const AllDDL = &[_][]const u8{
946 \\CREATE TABLE user( 952 \\CREATE TABLE user(
947 \\ id integer PRIMARY KEY, 953 \\ id integer PRIMARY KEY,
@@ -963,6 +969,10 @@ fn addTestData(db: *Db) !void {
963 inline for (AllDDL) |ddl| { 969 inline for (AllDDL) |ddl| {
964 try db.exec(ddl, .{}); 970 try db.exec(ddl, .{});
965 } 971 }
972}
973
974fn addTestData(db: *Db) !void {
975 try createTestTables(db);
966 976
967 for (test_users) |user| { 977 for (test_users) |user| {
968 try db.exec("INSERT INTO user(name, id, age, weight) VALUES(?{[]const u8}, ?{usize}, ?{usize}, ?{f32})", user); 978 try db.exec("INSERT INTO user(name, id, age, weight) VALUES(?{[]const u8}, ?{usize}, ?{usize}, ?{f32})", user);
@@ -1015,6 +1025,19 @@ test "sqlite: db pragma" {
1015 } 1025 }
1016} 1026}
1017 1027
1028test "sqlite: last insert row id" {
1029 var db = try getTestDb();
1030 try createTestTables(&db);
1031
1032 try db.exec("INSERT INTO user(name, age) VALUES(?, ?{u32})", .{
1033 .name = "test-user",
1034 .age = @as(u32, 400),
1035 });
1036
1037 const id = db.getLastInsertRowID();
1038 testing.expectEqual(@as(i64, 1), id);
1039}
1040
1018test "sqlite: statement exec" { 1041test "sqlite: statement exec" {
1019 var db = try getTestDb(); 1042 var db = try getTestDb();
1020 try addTestData(&db); 1043 try addTestData(&db);