implement restore feature for navbar request, change id data type to sqlite3_int64

This commit is contained in:
yggverse 2024-09-11 04:15:55 +03:00
parent 9d88b4aa16
commit 6b6ae753bc
7 changed files with 167 additions and 11 deletions

View file

@ -70,6 +70,49 @@ void Page::update()
);
}
int Page::restore(
const sqlite3_int64 & APP_BROWSER_MAIN_TAB__SESSION__ID
) {
sqlite3_stmt* statement; // @TODO move to the DB model namespace
const int PREPARE_STATUS = sqlite3_prepare_v3(
db,
Glib::ustring::sprintf(
R"SQL(
SELECT * FROM `app_browser_main_tab_page__session`
WHERE `app_browser_main_tab__session__id` = %d
ORDER BY `id` DESC LIMIT 1
)SQL",
APP_BROWSER_MAIN_TAB__SESSION__ID
).c_str(),
-1,
SQLITE_PREPARE_NORMALIZE,
&statement,
nullptr
);
if (PREPARE_STATUS == SQLITE_OK)
{
// Use latest record as order
while (sqlite3_step(statement) == SQLITE_ROW)
{
// Restore children components
pageNavigation->restore(
sqlite3_column_int64(
statement,
DB::SESSION::ID
)
);
}
}
sqlite3_finalize(
statement
);
return PREPARE_STATUS;
}
int Page::save(
const sqlite3_int64 & APP_BROWSER_MAIN_TAB__SESSION__ID
) {
@ -390,7 +433,7 @@ int Page::DB::SESSION::init(
int Page::DB::SESSION::clean(
sqlite3 * db,
const int & APP_BROWSER_MAIN_TAB__SESSION__ID
const sqlite3_int64 & APP_BROWSER_MAIN_TAB__SESSION__ID
) {
char * error; // @TODO
sqlite3_stmt * statement;
@ -413,7 +456,7 @@ int Page::DB::SESSION::clean(
{
while (sqlite3_step(statement) == SQLITE_ROW)
{
const int APP_BROWSER_MAIN_TAB_PAGE__SESSION__ID = sqlite3_column_int(
const sqlite3_int64 APP_BROWSER_MAIN_TAB_PAGE__SESSION__ID = sqlite3_column_int64(
statement,
DB::SESSION::ID
);