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) {
auto it_found = m_cache.find(item_id);
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");
}
const int64_t table_id = m_query.getColumn(0);
const SQLiteID table_id = m_query.getColumn(0);
m_query.reset();
if (m_use_cache)
m_cache[item_id] = table_id;
@ -170,7 +170,7 @@ namespace {
}
private:
std::unordered_map<int, int64_t> m_cache;
std::unordered_map<int, SQLiteID> m_cache;
SQLite::Database& m_db;
SQLite::Statement m_query;
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);
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 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 upd_snapshot_date(db, "UPDATE shop_snapshots SET last_seen_date=CURRENT_TIMESTAMP WHERE id=?");
InsertShopIfn insert_shop_ifn(db);
ItemIdToTableId item_id_to_table_id(db);
ItemIdToTableId item_id_to_table_id(db, true);
SQLite::Transaction transaction(db);
const SQLiteID source_id = insert_source_ifn(db, source);
for (const auto& shop : shops.shops) {