// Update a Split bool QuasarDB::update(const Split& orig, Split& split) { if (orig.id() == INVALID_ID || split.id() == INVALID_ID) return false; if (!validate(split)) return false; if (!update(orig, (Gltx&)split)) return false; // Update the split tables QString cmd = updateText("split", "split_id", "account_id," "amount,transfer_id"); Statement stmt(connection(), cmd); stmtSetId(stmt, split.accountId()); stmtSetFixed(stmt, split.amount()); stmtSetId(stmt, split.transferAccount()); stmtSetId(stmt, split.id()); if (!execute(stmt)) return false; if (!sqlDeleteLines(orig)) return false; if (!sqlCreateLines(split)) return false; commit(); dataSignal(DataEvent::Update, orig); return true; }
// Delete a Split bool QuasarDB::remove(const Split& split) { if (split.id() == INVALID_ID) return false; if (!sqlDeleteLines(split)) return false; if (!remove((Gltx&)split)) return false; commit(); dataSignal(DataEvent::Delete, split); return true; }
bool QuasarDB::sqlCreateLines(const Split& split) { QString cmd = insertText("split_alloc", "split_id", "seq_num,store_id," "amount"); Statement stmt(connection(), cmd); const vector<AllocLine>& lines = split.allocations(); for (unsigned int line = 0; line < lines.size(); ++line) { Id store_id = lines[line].store_id; fixed amount = lines[line].amount; stmtSetId(stmt, split.id()); stmtSetInt(stmt, line); stmtSetId(stmt, store_id); stmtSetFixed(stmt, amount); if (!execute(stmt)) return false; } return true; }
// Create a Split bool QuasarDB::create(Split& split) { if (!validate(split)) return false; if (!create((Gltx&)split)) return false; QString cmd = insertText("split", "split_id", "account_id," "amount,transfer_id"); Statement stmt(connection(), cmd); stmtSetId(stmt, split.id()); stmtSetId(stmt, split.accountId()); stmtSetFixed(stmt, split.amount()); stmtSetId(stmt, split.transferAccount()); if (!execute(stmt)) return false; if (!sqlCreateLines(split)) return false; commit(); dataSignal(DataEvent::Insert, split); return true; }