Skip to content

Switch to using libsql_open_sync_with_config #32

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified lib/darwin_amd64/libsql_experimental.a
Binary file not shown.
37 changes: 37 additions & 0 deletions lib/include/libsql.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,16 @@

#include <stdint.h>

#define LIBSQL_INT 1

#define LIBSQL_FLOAT 2

#define LIBSQL_TEXT 3

#define LIBSQL_BLOB 4

#define LIBSQL_NULL 5

typedef struct libsql_connection libsql_connection;

typedef struct libsql_database libsql_database;
Expand All @@ -17,6 +27,16 @@ typedef struct libsql_stmt libsql_stmt;

typedef const libsql_database *libsql_database_t;

typedef struct {
const char *db_path;
const char *primary_url;
const char *auth_token;
char read_your_writes;
const char *encryption_key;
int sync_interval;
char with_webpki;
} libsql_config;

typedef const libsql_connection *libsql_connection_t;

typedef const libsql_stmt *libsql_stmt_t;
Expand Down Expand Up @@ -46,12 +66,27 @@ int libsql_open_sync(const char *db_path,
libsql_database_t *out_db,
const char **out_err_msg);

int libsql_open_sync_with_webpki(const char *db_path,
const char *primary_url,
const char *auth_token,
char read_your_writes,
const char *encryption_key,
libsql_database_t *out_db,
const char **out_err_msg);

int libsql_open_sync_with_config(libsql_config config, libsql_database_t *out_db, const char **out_err_msg);

int libsql_open_ext(const char *url, libsql_database_t *out_db, const char **out_err_msg);

int libsql_open_file(const char *url, libsql_database_t *out_db, const char **out_err_msg);

int libsql_open_remote(const char *url, const char *auth_token, libsql_database_t *out_db, const char **out_err_msg);

int libsql_open_remote_with_webpki(const char *url,
const char *auth_token,
libsql_database_t *out_db,
const char **out_err_msg);

void libsql_close(libsql_database_t db);

int libsql_connect(libsql_database_t db, libsql_connection_t *out_conn, const char **out_err_msg);
Expand All @@ -76,6 +111,8 @@ int libsql_query_stmt(libsql_stmt_t stmt, libsql_rows_t *out_rows, const char **

int libsql_execute_stmt(libsql_stmt_t stmt, const char **out_err_msg);

int libsql_reset_stmt(libsql_stmt_t stmt, const char **out_err_msg);

void libsql_free_stmt(libsql_stmt_t stmt);

int libsql_query(libsql_connection_t conn, const char *sql, libsql_rows_t *out_rows, const char **out_err_msg);
Expand Down
17 changes: 15 additions & 2 deletions libsql.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@ import (
sqldriver "database/sql/driver"
"errors"
"fmt"
"github.com/antlr4-go/antlr/v4"
"io"
"net/url"
"regexp"
"strings"
"time"
"unsafe"

"github.com/antlr4-go/antlr/v4"
"github.com/libsql/sqlite-antlr4-parser/sqliteparser"
"github.com/libsql/sqlite-antlr4-parser/sqliteparserutils"
)
Expand Down Expand Up @@ -320,9 +320,22 @@ func libsqlOpenWithSync(dbPath, primaryUrl, authToken string, readYourWrites boo
defer C.free(unsafe.Pointer(encrytionKeyNativeString))
}

var syncIntervalNative C.int = 0
var withWebpkiNative C.char = 0

config := C.libsql_config{
db_path: dbPathNativeString,
primary_url: primaryUrlNativeString,
auth_token: authTokenNativeString,
read_your_writes: readYourWritesNative,
encryption_key: encrytionKeyNativeString,
sync_interval: syncIntervalNative,
with_webpki: withWebpkiNative,
}

var db C.libsql_database_t
var errMsg *C.char
statusCode := C.libsql_open_sync(dbPathNativeString, primaryUrlNativeString, authTokenNativeString, readYourWritesNative, encrytionKeyNativeString, &db, &errMsg)
statusCode := C.libsql_open_sync_with_config(config, &db, &errMsg)
if statusCode != 0 {
return nil, libsqlError(fmt.Sprintf("failed to open database %s %s", dbPath, primaryUrl), statusCode, errMsg)
}
Expand Down