diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2016-01-23 17:48:50 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2016-01-23 17:48:50 (GMT) |
commit | adb98feb93f09d8de343c504a0c8c72815d62dab (patch) | |
tree | c345bf863252c2384b946b8ebfa315cda88b8ba9 /src/analysis/db/collection.c | |
parent | 18be9204f2f6b054f254d1fa045039952ddfad41 (diff) |
Created storable items for user comments.
Diffstat (limited to 'src/analysis/db/collection.c')
-rw-r--r-- | src/analysis/db/collection.c | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/src/analysis/db/collection.c b/src/analysis/db/collection.c index d5518dd..aa7591e 100644 --- a/src/analysis/db/collection.c +++ b/src/analysis/db/collection.c @@ -992,15 +992,21 @@ bool g_db_collection_load_all_items(GDbCollection *collec, sqlite3 *db) /** * On réalise une petite conversion selon le champ. * - * Le filtre SQLITE_NATIVE est destiné à conserver un champ sur 32 bits - * quand il s'agit du format utilisé, même si toutes les valeurs sont - * enregistrées en 64 bits. + * Le filtre SQLITE_NATIVE est destiné à conserver le type choisi par + * SQLite. Typiquement, une chaîne peut être à SQLITE_NULL ou SQLITE_TEXT + * selon la valeur conservée dans la base. * - * C'est par exemple le cas dans les bascules d'affichage. - * - * D'autres éléments, comme les localisations en mémoire, peuvent + * D'autres éléments, comme les localisations en mémoire, peuvent aussi * avoir un champ éventuellement nul, donc la définition à partir des * indications de la base de données reste importante. + * + * En ce qui concerne les valeurs numériques, SQLite ne fait pas de + * distinction : tout passe par la fonction sqlite3VdbeIntValue(), + * qui effectue des transtypages au besoin pour tout ce qui n'est + * pas numérique. + * + * Pour les types internes SQLITE_INTEGER et SQLITE_BOOLEAN, + * il est donc nécessaire d'ajuster en interne. */ if (native_type == SQLITE_INTEGER) @@ -1010,13 +1016,18 @@ bool g_db_collection_load_all_items(GDbCollection *collec, sqlite3 *db) values[i].type = native_type; else - assert(values[i].type == native_type || values[i].type == SQLITE_INTEGER); - + assert(values[i].type == native_type + || values[i].type == SQLITE_INTEGER + || values[i].type == SQLITE_BOOLEAN); switch (values[i].type) { + case SQLITE_BOOLEAN: + values[i].boolean = (bool)sqlite3_column_int(stmt, i); + break; + case SQLITE_INTEGER: - values[i].integer = (int)sqlite3_column_int64(stmt, i); + values[i].integer = sqlite3_column_int(stmt, i); break; case SQLITE_INT64: @@ -1142,6 +1153,11 @@ static bool g_db_collection_store_item(const GDbCollection *collec, const GDbIte { switch (values[i].type) { + case SQLITE_BOOLEAN: + ret = sqlite3_bind_int(stmt, index, values[i].boolean); + index++; + break; + case SQLITE_INTEGER: ret = sqlite3_bind_int(stmt, index, values[i].integer); index++; @@ -1301,6 +1317,11 @@ static bool g_db_collection_store_updated_item(const GDbCollection *collec, cons switch (values[i].type) { + case SQLITE_BOOLEAN: + ret = sqlite3_bind_int(stmt, index, values[i].boolean); + index++; + break; + case SQLITE_INTEGER: ret = sqlite3_bind_int(stmt, index, values[i].integer); index++; |