update: add version support to database find, better depend checking for resolve

This commit is contained in:
ngn
2024-07-08 12:49:22 +03:00
parent cb193d0f18
commit 216ca5c9dd
12 changed files with 264 additions and 169 deletions

View File

@ -98,6 +98,6 @@ lm_pool_t *lm_ctx_pool_by_url(lm_ctx_t *ctx, char *host, char *path); // find p
######################## */
bool lm_ctx_database_init(lm_ctx_t *ctx); // init ctx database (if not already present)
bool lm_ctx_database_is_installed(lm_ctx_t *ctx, lm_pkg_t *pkg, bool check_version); // check if a package is installed
bool lm_ctx_database_find(lm_ctx_t *ctx, lm_pkg_t *pkg, char *name); // find a package by name
bool lm_ctx_database_find(lm_ctx_t *ctx, lm_pkg_t *pkg, char *name, char *version); // find a package by name
bool lm_ctx_database_foreach(
lm_ctx_t *ctx, lm_ctx_database_callback_t callback, void *data); // loop for each package in the database

View File

@ -5,18 +5,19 @@
#define HASH_LEN 32
enum lm_query_index {
QUERY_CREATE_PACKAGE_TABLE = 0,
QUERY_INSERT_PACKAGE_SINGLE = 1,
QUERY_SELECT_PACKAGE_SINGLE = 2,
QUERY_DELETE_PACKAGE_SINGLE = 3,
QUERY_SELECT_PACKAGE_ALL = 4,
QUERY_CREATE_FILE_TABLE = 5,
QUERY_INSERT_FILE_SINGLE = 6,
QUERY_DELETE_FILE_ALL = 7,
QUERY_SELECT_FILE_SINGLE = 8,
QUERY_SELECT_FILE_ALL = 9,
QUERY_UPDATE_FILE_1 = 10,
QUERY_UPDATE_FILE_2 = 11,
QUERY_CREATE_PACKAGE_TABLE = 0,
QUERY_INSERT_PACKAGE_SINGLE = 1,
QUERY_SELECT_PACKAGE_SINGLE_1 = 2,
QUERY_SELECT_PACKAGE_SINGLE_2 = 3,
QUERY_DELETE_PACKAGE_SINGLE = 4,
QUERY_SELECT_PACKAGE_ALL = 5,
QUERY_CREATE_FILE_TABLE = 6,
QUERY_INSERT_FILE_SINGLE = 7,
QUERY_DELETE_FILE_ALL = 8,
QUERY_SELECT_FILE_SINGLE = 9,
QUERY_SELECT_FILE_ALL = 10,
QUERY_UPDATE_FILE_1 = 11,
QUERY_UPDATE_FILE_2 = 12,
};
enum lm_columns {
@ -26,8 +27,8 @@ enum lm_columns {
FILES_COLUMN_PACKAGE = 4,
PACKAGES_COLUMN_NAME = 1,
PACKAGES_COLUMN_DESC = 2,
PACKAGES_COLUMN_VERSION = 3,
PACKAGES_COLUMN_VERSION = 2,
PACKAGES_COLUMN_DESC = 3,
PACKAGES_COLUMN_SIZE = 4,
PACKAGES_COLUMN_DEPENDS = 5,
};
@ -50,10 +51,10 @@ void lm_database_free(lm_database_t *db);
bool lm_database_step_all(sqlite3_stmt *st);
bool lm_database_package_find(
lm_database_t *db, lm_pkg_t *pkg, char *name); // finds a package by its name, package stored in *pkg
bool lm_database_package_next(lm_database_t *db, lm_pkg_t *pkg); // gets the next package in the database
bool lm_database_package_add(lm_database_t *db, lm_pkg_t *pkg); // adds a package to the database
bool lm_database_package_del(lm_database_t *db, lm_pkg_t *pkg); // delete a package from the database
lm_database_t *db, lm_pkg_t *pkg, char *name, char *version); // finds a package by its name, package stored in *pkg
bool lm_database_package_next(lm_database_t *db, lm_pkg_t *pkg); // gets the next package in the database
bool lm_database_package_add(lm_database_t *db, lm_pkg_t *pkg); // adds a package to the database
bool lm_database_package_del(lm_database_t *db, lm_pkg_t *pkg); // delete a package from the database
void lm_database_package_next_free(
lm_database_t *db, lm_pkg_t *pkg); // frees resources used for lm_database_package_next

View File

@ -126,6 +126,12 @@ typedef enum lm_error {
LM_ERR_PkgDatabaseDelFail = 119,
LM_ERR_PkgFilesDelFail = 119,
LM_ERR_PkgChangesDelFail = 120,
LM_ERR_InstallCwdFail = 121,
LM_ERR_InstallRootChdirFail = 122,
LM_ERR_InstallSpawnFail = 123,
LM_ERR_InstallBackChdirFail = 124,
LM_ERR_InstallStatusFail = 125,
LM_ERR_InstallScriptFail = 126,
} lm_error_t;
typedef struct lm_error_desc {