summaryrefslogtreecommitdiff
path: root/src/analysis/db/item.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2019-05-08 09:28:58 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2019-05-08 09:28:58 (GMT)
commit86ba53836168bcc591f532f2419fa290de601572 (patch)
tree91c96614d6f7e3fd75800a52c0166c91c7f8ef31 /src/analysis/db/item.c
parent28e53c2498903090182ebeb128347fcd92896cd9 (diff)
Updated the core functions dealing with SQLite databases.
Diffstat (limited to 'src/analysis/db/item.c')
-rw-r--r--src/analysis/db/item.c113
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);
}