Fix insertion of empty item record

Also improve some code style a bit
This commit is contained in:
King_DuckZ 2020-09-05 01:00:25 +01:00
parent 8f8865e4df
commit 7da3f81c27

View file

@ -148,7 +148,7 @@ namespace {
{ {
} }
int64_t operator() (int item_id) { SQLiteID operator() (int item_id) {
if (m_use_cache) { if (m_use_cache) {
auto it_found = m_cache.find(item_id); auto it_found = m_cache.find(item_id);
if (m_cache.end() != it_found) if (m_cache.end() != it_found)
@ -161,7 +161,7 @@ namespace {
throw std::runtime_error("No item_id " + to_string(item_id) + " found in table items"); throw std::runtime_error("No item_id " + to_string(item_id) + " found in table items");
} }
const int64_t table_id = m_query.getColumn(0); const SQLiteID table_id = m_query.getColumn(0);
m_query.reset(); m_query.reset();
if (m_use_cache) if (m_use_cache)
m_cache[item_id] = table_id; m_cache[item_id] = table_id;
@ -170,7 +170,7 @@ namespace {
} }
private: private:
std::unordered_map<int, int64_t> m_cache; std::unordered_map<int, SQLiteID> m_cache;
SQLite::Database& m_db; SQLite::Database& m_db;
SQLite::Statement m_query; SQLite::Statement m_query;
bool m_use_cache; bool m_use_cache;
@ -488,14 +488,14 @@ void OriginsDBSQLite::update (const Shops& shops, const oro::Timestamp& next_upd
db.exec(g_create_slotted_cards); db.exec(g_create_slotted_cards);
SQLite::Statement ins_sshot(db, "INSERT OR IGNORE INTO shop_snapshots(shop_id, hash, source_id) VALUES(?, ?, ?)"); SQLite::Statement ins_sshot(db, "INSERT OR IGNORE INTO shop_snapshots(shop_id, hash, source_id) VALUES(?, ?, ?)");
SQLite::Statement ins_empty_item(db, "INSERT OR IGNORE INTO items(item_id) VALUES(?)"); SQLite::Statement ins_empty_item(db, "INSERT OR IGNORE INTO items(item_id, source_id) VALUES(?, 0)");
SQLite::Statement sel_sshot(db, "SELECT id FROM shop_snapshots WHERE shop_id = ? AND hash = ?"); SQLite::Statement sel_sshot(db, "SELECT id FROM shop_snapshots WHERE shop_id = ? AND hash = ?");
SQLite::Statement ins_item(db, "INSERT INTO shop_items(snapshot_id, item_id, amount, price, refine, star_crumbs, element, creator, beloved) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)"); SQLite::Statement ins_item(db, "INSERT INTO shop_items(snapshot_id, item_id, amount, price, refine, star_crumbs, element, creator, beloved) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)");
SQLite::Statement ins_card(db, "INSERT INTO slotted_cards(shop_item_id, card_id) VALUES(?, ?)"); SQLite::Statement ins_card(db, "INSERT INTO slotted_cards(shop_item_id, card_id) VALUES(?, ?)");
SQLite::Statement upd_snapshot_date(db, "UPDATE shop_snapshots SET last_seen_date=CURRENT_TIMESTAMP WHERE id=?"); SQLite::Statement upd_snapshot_date(db, "UPDATE shop_snapshots SET last_seen_date=CURRENT_TIMESTAMP WHERE id=?");
InsertShopIfn insert_shop_ifn(db); InsertShopIfn insert_shop_ifn(db);
ItemIdToTableId item_id_to_table_id(db); ItemIdToTableId item_id_to_table_id(db, true);
SQLite::Transaction transaction(db); SQLite::Transaction transaction(db);
const SQLiteID source_id = insert_source_ifn(db, source); const SQLiteID source_id = insert_source_ifn(db, source);
for (const auto& shop : shops.shops) { for (const auto& shop : shops.shops) {