/* 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 #include #include #include #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. * * `db_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 db_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). * `immutable_query`: whether the query is read-only. * * 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 */