diff options
Diffstat (limited to 'src/analysis/db/item.c')
-rw-r--r-- | src/analysis/db/item.c | 113 |
1 files changed, 66 insertions, 47 deletions
diff --git a/src/analysis/db/item.c b/src/analysis/db/item.c index f01a953..6fa168f 100644 --- a/src/analysis/db/item.c +++ b/src/analysis/db/item.c @@ -58,12 +58,12 @@ static bool _g_db_item_pack(const GDbItem *, packed_buffer *); /* --------------------- MANIPULATIONS AVEC UNE BASE DE DONNEES --------------------- */ -/* Constitue les champs destinés à une insertion / modification. */ -static bool _g_db_item_prepare_db_statement(const GDbItem *, bound_value **, size_t *); - /* Charge les valeurs utiles pour un élément de collection. */ static bool _g_db_item_load(GDbItem *, const bound_value *, size_t); +/* Constitue les champs destinés à une insertion / modification. */ +static bool _g_db_item_store(const GDbItem *, bound_value **, size_t *); + /* Indique le type défini pour une base d'élément de collection générique. */ @@ -96,8 +96,8 @@ static void g_db_item_class_init(GDbItemClass *klass) klass->unpack = (unpack_db_item_fc)_g_db_item_unpack; klass->pack = (pack_db_item_fc)_g_db_item_pack; - klass->prepare_stmt = (prepare_db_statement)_g_db_item_prepare_db_statement; klass->load = (load_db_item_fc)_g_db_item_load; + klass->store = (store_db_item_fc)_g_db_item_store; } @@ -616,31 +616,31 @@ bool g_db_item_is_volatile(const GDbItem *item) /****************************************************************************** * * -* Paramètres : item = base d'éléments sur laquelle s'appuyer. * -* values = couples de champs et de valeurs à lier. [OUT] * -* count = nombre de ces couples. [OUT] * +* Paramètres : item = base d'éléments à charger depuis les réponses. * +* values = tableau d'éléments à consulter. * +* count = nombre de descriptions renseignées. * * * -* Description : Constitue les champs destinés à une insertion / modification.* +* Description : Charge les valeurs utiles pour un élément de collection. * * * -* Retour : Bilan de l'opération : succès ou non. * +* Retour : Bilan de l'opération. * * * * Remarques : - * * * ******************************************************************************/ -static bool _g_db_item_prepare_db_statement(const GDbItem *item, bound_value **values, size_t *count) +static bool _g_db_item_load(GDbItem *item, const bound_value *values, size_t count) { - bool result; /* Bilan à retourner */ + bool result; /* Bilan global à retourner */ result = true; - result &= prepare_db_statement_for_timestamp(&item->created, "created", values, count); + result &= load_timestamp(&item->created, "created", values, count); - result &= prepare_db_statement_for_timestamp(&item->timestamp, "timestamp", values, count); + result &= load_timestamp(&item->timestamp, "timestamp", values, count); - result &= prepare_db_statement_for_rle_string(&item->author, "author", values, count); + result &= load_rle_string(&item->author, "author", values, count); - result &= prepare_db_statement_for_rle_string(&item->tool, "tool", values, count); + result &= load_rle_string(&item->tool, "tool", values, count); return result; @@ -649,55 +649,75 @@ static bool _g_db_item_prepare_db_statement(const GDbItem *item, bound_value **v /****************************************************************************** * * -* Paramètres : item = base d'éléments sur laquelle s'appuyer. * -* values = couples de champs et de valeurs à lier. [OUT] * -* count = nombre de ces couples. [OUT] * +* Paramètres : item = base d'éléments à charger depuis les réponses. * +* values = tableau d'éléments à consulter. * +* count = nombre de descriptions renseignées. * * * -* Description : Constitue les champs destinés à une insertion / modification.* +* Description : Charge les valeurs utiles pour un élément de collection. * * * -* Retour : Bilan de l'opération : succès ou non. * +* Retour : Bilan de l'opération. * * * * Remarques : - * * * ******************************************************************************/ -bool g_db_item_prepare_db_statement(const GDbItem *item, bound_value **values, size_t *count) +bool g_db_item_load(GDbItem *item, const bound_value *values, size_t count) { - *values = NULL; - *count = 0; + bool result; /* Bilan à retourner */ + + result = G_DB_ITEM_GET_CLASS(item)->load(item, values, count); - return G_DB_ITEM_GET_CLASS(item)->prepare_stmt(item, values, count); + return result; } /****************************************************************************** * * -* Paramètres : item = base d'éléments à charger depuis les réponses. * -* values = tableau d'éléments à consulter. * -* count = nombre de descriptions renseignées. * +* Paramètres : item = base d'éléments sur laquelle s'appuyer. * +* values = couples de champs et de valeurs à lier. [OUT] * +* count = nombre de ces couples. [OUT] * * * -* Description : Charge les valeurs utiles pour un élément de collection. * +* Description : Constitue les champs destinés à une insertion / modification.* * * -* Retour : Bilan de l'opération. * +* Retour : Bilan de l'opération : succès ou non. * * * * Remarques : - * * * ******************************************************************************/ -static bool _g_db_item_load(GDbItem *item, const bound_value *values, size_t count) +static bool _g_db_item_store(const GDbItem *item, bound_value **values, size_t *count) { - bool result; /* Bilan global à retourner */ - - result = true; + bool result; /* Bilan à retourner */ - result &= load_timestamp(&item->created, "created", values, count); + if (item == NULL) + result = store_timestamp(NULL, "created", values, count); + else + result = store_timestamp(&item->created, "created", values, count); - result &= load_timestamp(&item->timestamp, "timestamp", values, count); + if (result) + { + if (item == NULL) + result = store_timestamp(NULL, "timestamp", values, count); + else + result = store_timestamp(&item->timestamp, "timestamp", values, count); + } - result &= load_rle_string(&item->author, "author", values, count); + if (result) + { + if (item == NULL) + result = store_rle_string(NULL, "author", values, count); + else + result = store_rle_string(&item->author, "author", values, count); + } - result &= load_rle_string(&item->tool, "tool", values, count); + if (result) + { + if (item == NULL) + result = store_rle_string(NULL, "tool", values, count); + else + result = store_rle_string(&item->tool, "tool", values, count); + } return result; @@ -706,24 +726,23 @@ static bool _g_db_item_load(GDbItem *item, const bound_value *values, size_t cou /****************************************************************************** * * -* Paramètres : item = base d'éléments à charger depuis les réponses. * -* values = tableau d'éléments à consulter. * -* count = nombre de descriptions renseignées. * +* Paramètres : item = base d'éléments sur laquelle s'appuyer. * +* values = couples de champs et de valeurs à lier. [OUT] * +* count = nombre de ces couples. [OUT] * * * -* Description : Charge les valeurs utiles pour un élément de collection. * +* Description : Constitue les champs destinés à une insertion / modification.* * * -* Retour : Bilan de l'opération. * +* Retour : Bilan de l'opération : succès ou non. * * * * Remarques : - * * * ******************************************************************************/ -bool g_db_item_load(GDbItem *item, const bound_value *values, size_t count) +bool g_db_item_store(const GDbItem *item, bound_value **values, size_t *count) { - bool result; /* Bilan à retourner */ - - result = G_DB_ITEM_GET_CLASS(item)->load(item, values, count); + *values = NULL; + *count = 0; - return result; + return G_DB_ITEM_GET_CLASS(item)->store(item, values, count); } |