debug, deleting assets

This commit is contained in:
Blue 2024-01-21 16:23:48 -03:00
parent 19d786631a
commit a2c2c2a883
Signed by: blue
GPG key ID: 9B203B252A63EE38
20 changed files with 139 additions and 21 deletions

View file

@ -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;
}

View file

@ -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);

View file

@ -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());
}

View file

@ -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: