Skip to content

Commit 15849e4

Browse files
authored
Merge pull request #1855 from tursodatabase/bindings_example
Make C bindings example do sync
2 parents ff06574 + c00652f commit 15849e4

File tree

1 file changed

+70
-20
lines changed

1 file changed

+70
-20
lines changed

bindings/c/example.c

Lines changed: 70 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,92 @@
11
#include "libsql.h"
22
#include <assert.h>
33
#include <stdio.h>
4+
#include <string.h>
45

56
int main(int argc, char *argv[])
67
{
78
libsql_connection_t conn;
89
libsql_rows_t rows;
910
libsql_row_t row;
1011
libsql_database_t db;
12+
libsql_config config;
1113
const char *err = NULL;
1214
int retval = 0;
15+
char db_path[1024];
16+
char sync = 0;
1317

14-
retval = libsql_open_ext(":memory:", &db, &err);
15-
if (retval != 0) {
16-
fprintf(stderr, "%s\n", err);
17-
goto quit;
18-
}
18+
if (argc > 1) {
19+
char* url = argv[1];
20+
char auth_token[1024];
21+
auth_token[0] = '\0';
22+
if (argc > 2) {
23+
strncpy(auth_token, argv[2], strlen(argv[2]));
24+
}
25+
strncpy(db_path, "test.db", strlen("test.db"));
26+
config.db_path = db_path;
27+
config.primary_url = url;
28+
config.auth_token = auth_token;
29+
config.read_your_writes = 0;
30+
config.encryption_key = NULL;
31+
config.sync_interval = 0;
32+
config.with_webpki = 0;
33+
retval = libsql_open_sync_with_config(config, &db, &err);
34+
if (retval != 0) {
35+
fprintf(stderr, "%s\n", err);
36+
goto quit;
37+
}
38+
sync = 1;
39+
} else {
40+
retval = libsql_open_ext(":memory:", &db, &err);
41+
if (retval != 0) {
42+
fprintf(stderr, "%s\n", err);
43+
goto quit;
44+
}
45+
}
1946

2047
retval = libsql_connect(db, &conn, &err);
2148
if (retval != 0) {
2249
fprintf(stderr, "%s\n", err);
2350
goto quit;
2451
}
2552

26-
retval = libsql_query(conn, "SELECT 1", &rows, &err);
53+
retval = libsql_execute(conn, "CREATE TABLE IF NOT EXISTS guest_book_entries (text TEXT)", &err);
54+
if (retval != 0) {
55+
fprintf(stderr, "%s\n", err);
56+
goto quit;
57+
}
58+
59+
retval = libsql_execute(conn, "INSERT INTO guest_book_entries VALUES('hi there')", &err);
60+
if (retval != 0) {
61+
fprintf(stderr, "%s\n", err);
62+
goto quit;
63+
}
64+
65+
retval = libsql_execute(conn, "INSERT INTO guest_book_entries VALUES('some more hi there')", &err);
66+
if (retval != 0) {
67+
fprintf(stderr, "%s\n", err);
68+
goto quit;
69+
}
70+
71+
retval = libsql_query(conn, "SELECT text FROM guest_book_entries", &rows, &err);
2772
if (retval != 0) {
2873
fprintf(stderr, "%s\n", err);
2974
goto quit;
3075
}
3176

32-
int num_cols = libsql_column_count(rows);
33-
3477
while ((retval = libsql_next_row(rows, &row, &err)) == 0) {
3578
if (!err && !row) {
3679
break;
3780
}
38-
for (int col = 0; col < num_cols; col++) {
39-
if (col > 0) {
40-
printf(", ");
41-
}
42-
long long value;
43-
retval = libsql_get_int(row, col, &value, &err);
44-
if (retval != 0) {
45-
fprintf(stderr, "%s\n", err);
46-
} else {
47-
printf("%lld\n", value);
48-
}
49-
}
81+
const char * value = NULL;
82+
retval = libsql_get_string(row, 0, &value, &err);
83+
if (retval != 0) {
84+
fprintf(stderr, "%s\n", err);
85+
} else {
86+
printf("%s\n", value);
87+
libsql_free_string(value);
88+
value = NULL;
89+
}
5090
err = NULL;
5191
}
5292

@@ -55,6 +95,16 @@ int main(int argc, char *argv[])
5595
goto quit;
5696
}
5797

98+
if (sync) {
99+
printf("Syncing database to remote...\n");
100+
retval = libsql_sync(db, &err);
101+
if (retval != 0) {
102+
fprintf(stderr, "%s\n", err);
103+
goto quit;
104+
}
105+
printf("Done!\n");
106+
}
107+
58108
quit:
59109
libsql_free_rows(rows);
60110
libsql_disconnect(conn);

0 commit comments

Comments
 (0)