1
1
#include "libsql.h"
2
2
#include <assert.h>
3
3
#include <stdio.h>
4
+ #include <string.h>
4
5
5
6
int main (int argc , char * argv [])
6
7
{
7
8
libsql_connection_t conn ;
8
9
libsql_rows_t rows ;
9
10
libsql_row_t row ;
10
11
libsql_database_t db ;
12
+ libsql_config config ;
11
13
const char * err = NULL ;
12
14
int retval = 0 ;
15
+ char db_path [1024 ];
16
+ char sync = 0 ;
13
17
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
+ }
19
46
20
47
retval = libsql_connect (db , & conn , & err );
21
48
if (retval != 0 ) {
22
49
fprintf (stderr , "%s\n" , err );
23
50
goto quit ;
24
51
}
25
52
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 );
27
72
if (retval != 0 ) {
28
73
fprintf (stderr , "%s\n" , err );
29
74
goto quit ;
30
75
}
31
76
32
- int num_cols = libsql_column_count (rows );
33
-
34
77
while ((retval = libsql_next_row (rows , & row , & err )) == 0 ) {
35
78
if (!err && !row ) {
36
79
break ;
37
80
}
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
+ }
50
90
err = NULL ;
51
91
}
52
92
@@ -55,6 +95,16 @@ int main(int argc, char *argv[])
55
95
goto quit ;
56
96
}
57
97
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
+
58
108
quit :
59
109
libsql_free_rows (rows );
60
110
libsql_disconnect (conn );
0 commit comments