#pragma once #include "package.h" #include typedef enum lm_query_index { QUERY_CREATE_TABLE = 0, QUERY_INSERT_PACKAGE = 1, QUERY_SELECT_PACKAGE = 2, QUERY_DELETE_PACKAGE = 3, } lm_query_index_t; extern char *queries[]; typedef struct lm_database { lm_pkg_t *pkg; char *path; sqlite3 *sql; } lm_database_t; typedef bool (*lm_database_files_eachfunc_t)(lm_pkg_t *pkg, char *path, char *hash, void *data); typedef bool (*lm_database_keeps_eachfunc_t)(lm_pkg_t *pkg, char *path, void *data); lm_database_t *lm_database_new(char *path); void lm_database_free(lm_database_t *db); bool lm_database_find(lm_database_t *db, lm_pkg_t *pkg, char *name); bool lm_database_add(lm_database_t *db, lm_pkg_t *pkg); bool lm_database_del(lm_database_t *db, lm_pkg_t *pkg); bool lm_database_files_foreach(lm_database_t *db, lm_pkg_t *pkg, lm_database_files_eachfunc_t func); bool lm_database_files_add(lm_database_t *db, lm_pkg_t *pkg, char *path, char *hash); bool lm_database_files_get(lm_database_t *db, lm_pkg_t *pkg, char *path, char *hash); bool lm_database_files_del(lm_database_t *db, lm_pkg_t *pkg); bool lm_database_keeps_foreach(lm_database_t *db, lm_pkg_t *pkg, lm_database_keeps_eachfunc_t func); bool lm_database_keeps_contains(lm_database_t *db, lm_pkg_t *pkg, char *path); bool lm_database_keeps_add(lm_database_t *db, lm_pkg_t *pkg, char *path); bool lm_database_keeps_del(lm_database_t *db, lm_pkg_t *pkg);