|
|
|
/*
|
|
|
|
Copyright 2022, The Cozo Project Authors.
|
|
|
|
|
|
|
|
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
|
|
|
|
If a copy of the MPL was not distributed with this file,
|
|
|
|
You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef COZO_C_H
|
|
|
|
#define COZO_C_H
|
|
|
|
|
|
|
|
/* Warning, this file is autogenerated by cbindgen. Don't modify this manually. */
|
|
|
|
|
|
|
|
#include <stdarg.h>
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif // __cplusplus
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Open a database.
|
|
|
|
*
|
|
|
|
* `engine`: which storage engine to use, can be "mem", "sqlite" or "rocksdb".
|
|
|
|
* `path`: should contain the UTF-8 encoded path name as a null-terminated C-string.
|
|
|
|
* `db_id`: will contain the id of the database opened.
|
|
|
|
* `options`: options for the DB constructor: engine dependent.
|
|
|
|
*
|
|
|
|
* When the function is successful, null pointer is returned,
|
|
|
|
* otherwise a pointer to a C-string containing the error message will be returned.
|
|
|
|
* The returned C-string must be freed with `cozo_free_str`.
|
|
|
|
*/
|
|
|
|
char *cozo_open_db(const char *engine, const char *path, const char *options, int32_t *db_id);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Close a database.
|
|
|
|
*
|
|
|
|
* `id`: the ID representing the database to close.
|
|
|
|
*
|
|
|
|
* Returns `true` if the database is closed,
|
|
|
|
* `false` if it has already been closed, or does not exist.
|
|
|
|
*/
|
|
|
|
bool cozo_close_db(int32_t id);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Run query against a database.
|
|
|
|
*
|
|
|
|
* `db_id`: the ID representing the database to run the query.
|
|
|
|
* `script_raw`: a UTF-8 encoded C-string for the CozoScript to execute.
|
|
|
|
* `params_raw`: a UTF-8 encoded C-string for the params of the query,
|
|
|
|
* in JSON format. You must always pass in a valid JSON map,
|
|
|
|
* even if you do not use params in your query
|
|
|
|
* (pass "{}" in this case).
|
|
|
|
* `errored`: will point to `false` if the query is successful,
|
|
|
|
* `true` if an error occurred.
|
|
|
|
*
|
|
|
|
* Returns a UTF-8-encoded C-string that **must** be freed with `cozo_free_str`.
|
|
|
|
* The string contains the JSON return value of the query.
|
|
|
|
*/
|
|
|
|
char *cozo_run_query(int32_t db_id,
|
|
|
|
const char *script_raw,
|
|
|
|
const char *params_raw,
|
|
|
|
bool immutable_query);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Import data into relations
|
|
|
|
*
|
|
|
|
* Note that triggers are _not_ run for the relations, if any exists.
|
|
|
|
* If you need to activate triggers, use queries with parameters.
|
|
|
|
*
|
|
|
|
* `db_id`: the ID representing the database.
|
|
|
|
* `json_payload`: a UTF-8 encoded JSON payload, in the same form as returned by exporting relations.
|
|
|
|
*
|
|
|
|
* Returns a UTF-8-encoded C-string indicating the result that **must** be freed with `cozo_free_str`.
|
|
|
|
*/
|
|
|
|
char *cozo_import_relations(int32_t db_id,
|
|
|
|
const char *json_payload);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Export relations into JSON
|
|
|
|
*
|
|
|
|
* `db_id`: the ID representing the database.
|
|
|
|
* `json_payload`: a UTF-8 encoded JSON payload, see the manual for the expected fields.
|
|
|
|
*
|
|
|
|
* Returns a UTF-8-encoded C-string indicating the result that **must** be freed with `cozo_free_str`.
|
|
|
|
*/
|
|
|
|
char *cozo_export_relations(int32_t db_id,
|
|
|
|
const char *json_payload);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Backup the database.
|
|
|
|
*
|
|
|
|
* `db_id`: the ID representing the database.
|
|
|
|
* `out_path`: path of the output file.
|
|
|
|
*
|
|
|
|
* Returns a UTF-8-encoded C-string indicating the result that **must** be freed with `cozo_free_str`.
|
|
|
|
*/
|
|
|
|
char *cozo_backup(int32_t db_id,
|
|
|
|
const char *out_path);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Restore the database from a backup.
|
|
|
|
*
|
|
|
|
* `db_id`: the ID representing the database.
|
|
|
|
* `in_path`: path of the input file.
|
|
|
|
*
|
|
|
|
* Returns a UTF-8-encoded C-string indicating the result that **must** be freed with `cozo_free_str`.
|
|
|
|
*/
|
|
|
|
char *cozo_restore(int32_t db_id,
|
|
|
|
const char *in_path);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Import data into relations from a backup
|
|
|
|
*
|
|
|
|
* Note that triggers are _not_ run for the relations, if any exists.
|
|
|
|
* If you need to activate triggers, use queries with parameters.
|
|
|
|
*
|
|
|
|
* `db_id`: the ID representing the database.
|
|
|
|
* `json_payload`: a UTF-8 encoded JSON payload: `{"path": ..., "relations": [...]}`
|
|
|
|
*
|
|
|
|
* Returns a UTF-8-encoded C-string indicating the result that **must** be freed with `cozo_free_str`.
|
|
|
|
*/
|
|
|
|
char *cozo_import_from_backup(int32_t db_id,
|
|
|
|
const char *json_payload);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Free any C-string returned from the Cozo C API.
|
|
|
|
* Must be called exactly once for each returned C-string.
|
|
|
|
*
|
|
|
|
* `s`: the C-string to free.
|
|
|
|
*/
|
|
|
|
void cozo_free_str(char *s);
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
} // extern "C"
|
|
|
|
#endif // __cplusplus
|
|
|
|
|
|
|
|
#endif /* COZO_C_H */
|