debug, deleting assets
This commit is contained in:
parent
19d786631a
commit
a2c2c2a883
20 changed files with 139 additions and 21 deletions
|
@ -47,6 +47,7 @@ public:
|
|||
virtual Session findSession(const std::string& accessToken) = 0;
|
||||
virtual std::vector<Asset> listAssets(unsigned int owner) = 0;
|
||||
virtual Asset addAsset(const Asset& asset) = 0;
|
||||
virtual bool deleteAsset(unsigned int assetId, unsigned int actorId) = 0;
|
||||
|
||||
protected:
|
||||
Interface(Type type);
|
||||
|
|
|
@ -56,6 +56,7 @@ CREATE TABLE IF NOT EXISTS currencies (
|
|||
`value` DECIMAL (20, 5) NOT NULL,
|
||||
`source` TEXT,
|
||||
`description` TEXT,
|
||||
`icon` VARCHAR(256),
|
||||
|
||||
INDEX manual_idx (manual)
|
||||
);
|
||||
|
@ -71,6 +72,7 @@ CREATE TABLE IF NOT EXISTS assets (
|
|||
`balance` DECIMAL (20, 5) DEFAULT 0,
|
||||
`type` INTEGER UNSIGNED NOT NULL,
|
||||
`archived` BOOLEAN DEFAULT FALSE,
|
||||
`created` TIMESTAMP DEFAULT UTC_TIMESTAMP(),
|
||||
|
||||
INDEX owner_idx (owner),
|
||||
INDEX archived_idx (archived),
|
||||
|
|
|
@ -25,6 +25,7 @@ constexpr const char* selectSession = "SELECT id, owner, access, renew FROM sess
|
|||
constexpr const char* selectAssets = "SELECT id, owner, currency, title, icon, archived FROM assets where owner = ?";
|
||||
constexpr const char* insertAsset = "INSERT INTO assets (`owner`, `currency`, `title`, `icon`, `archived`, `type`)"
|
||||
" VALUES (?, ?, ?, ?, ?, 1)";
|
||||
constexpr const char* removeAsset = "DELETE FROM assets where `id` = ? AND `owner` = ?";
|
||||
|
||||
static const std::filesystem::path buildSQLPath = "database";
|
||||
|
||||
|
@ -348,15 +349,29 @@ DB::Asset DB::MySQL::addAsset(const Asset& asset) {
|
|||
MYSQL* con = &connection;
|
||||
Asset result = asset;
|
||||
|
||||
Statement session(con, insertAsset);
|
||||
session.bind(&result.owner, MYSQL_TYPE_LONG, true);
|
||||
session.bind(&result.currency, MYSQL_TYPE_LONG, true);
|
||||
session.bind(result.title.data(), MYSQL_TYPE_STRING);
|
||||
session.bind(result.icon.data(), MYSQL_TYPE_STRING);
|
||||
session.bind(&result.archived, MYSQL_TYPE_TINY);
|
||||
session.execute();
|
||||
Statement add(con, insertAsset);
|
||||
add.bind(&result.owner, MYSQL_TYPE_LONG, true);
|
||||
add.bind(&result.currency, MYSQL_TYPE_LONG, true);
|
||||
add.bind(result.title.data(), MYSQL_TYPE_STRING);
|
||||
add.bind(result.icon.data(), MYSQL_TYPE_STRING);
|
||||
add.bind(&result.archived, MYSQL_TYPE_TINY);
|
||||
add.execute();
|
||||
|
||||
result.id = lastInsertedId();
|
||||
|
||||
return asset;
|
||||
return result;
|
||||
}
|
||||
|
||||
bool DB::MySQL::deleteAsset(unsigned int assetId, unsigned int actorId) {
|
||||
MYSQL* con = &connection;
|
||||
|
||||
Statement del(con, removeAsset);
|
||||
del.bind(&assetId, MYSQL_TYPE_LONG, true);
|
||||
del.bind(&actorId, MYSQL_TYPE_LONG, true);
|
||||
del.execute();
|
||||
|
||||
if (del.affectedRows() == 0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -37,6 +37,7 @@ public:
|
|||
Session findSession (const std::string& accessToken) override;
|
||||
std::vector<Asset> listAssets (unsigned int owner) override;
|
||||
Asset addAsset (const Asset& asset) override;
|
||||
bool deleteAsset(unsigned int assetId, unsigned int actorId) override;
|
||||
|
||||
private:
|
||||
void executeFile (const std::filesystem::path& relativePath);
|
||||
|
|
|
@ -150,3 +150,6 @@ std::vector<std::vector<std::any>> DB::MySQL::Statement::fetchResult() {
|
|||
return result;
|
||||
}
|
||||
|
||||
unsigned int DB::MySQL::Statement::affectedRows () {
|
||||
return mysql_stmt_affected_rows(stmt.get());
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ public:
|
|||
|
||||
void bind(void* value, enum_field_types type, bool usigned = false);
|
||||
void execute();
|
||||
unsigned int affectedRows();
|
||||
std::vector<std::vector<std::any>> fetchResult();
|
||||
|
||||
private:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue