summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/db-test.c70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/db-test.c b/src/db-test.c
new file mode 100644
index 0000000..439ed79
--- /dev/null
+++ b/src/db-test.c
@@ -0,0 +1,70 @@
1#include <stdio.h>
2#include <stdlib.h>
3#include <limits.h>
4
5#include <db.h>
6#include <fcntl.h>
7
8#define USERNAME_LENGTH 20
9#define FULLNAME_LENGTH 50
10
11typedef struct {
12 char username[USERNAME_LENGTH];
13 char fullname[FULLNAME_LENGTH];
14 int age;
15} user_type;
16
17int main(void)
18{
19 DB *db = dbopen("./database.db", O_RDWR | O_CREAT, 0644, DB_BTREE, NULL); // NOLINT
20 if ( db != NULL ) {
21 (void) fprintf(stderr, "Datenbank eröffnet...\n");
22
23#if INSERT
24 user_type users[] = {
25 { "datengott", "Thomas Schmucker", 44 },
26 { "user1", "Sabine Müller", 23 },
27 { "sql-user", "SQL Database User", -1 }
28 };
29
30 for ( int i = 0; i != 3; ++i ) {
31 DBT data = { .data = &users[i], .size = sizeof(users[i]) };
32 DBT key = { .data = &users[i].username, .size = sizeof(users[i].username) };
33
34 int res = db->put(db, &key, &data, 0);
35 if ( res == -1 ) {
36 fprintf(stderr, "failed to insert data!\n");
37 }
38 }
39#endif
40
41#if LOOKUP
42 {
43 DBT key = { .data = &users[0].username, .size = sizeof(users[0].username) };
44 DBT data;
45
46 int res = db->get(db, &key, &data, 0);
47 if ( res == 0 ) {
48 user_type *user = data.data;
49 printf("Fullname: %s, Age: %d\n", user->fullname, user->age);
50 }
51 }
52#endif
53
54 {
55 DBT key;
56 DBT data;
57
58 int err = db->seq(db, &key, &data, R_FIRST);
59 while ( !err ) {
60 user_type *user = data.data;
61 printf("Fullname: %s, Age: %d\n", user->fullname, user->age);
62
63 err = db->seq(db, &key, &data, R_NEXT);
64 }
65 }
66
67 db->close(db);
68 }
69 return EXIT_SUCCESS;
70}