11#include "libsql.h"
22#include <assert.h>
33#include <stdio.h>
4+ #include <string.h>
45
56int 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+
58108quit :
59109 libsql_free_rows (rows );
60110 libsql_disconnect (conn );
0 commit comments