[Instances] Convert Instance Quest Methods to Repositories (#4012)

* [Instances] Convert Instance Quest Methods to Repositories

# Notes
- Convert `UpdateInstanceTimer()` and `GetInstanceTimerByID()` to repositories.
- Cleanup other instance methods.

* Update questmgr.cpp
This commit is contained in:
Alex King
2024-01-25 05:50:10 -05:00
committed by GitHub
parent 5b85f89c21
commit e9285fd2ca
3 changed files with 113 additions and 78 deletions
+33 -6
View File
@@ -45,14 +45,41 @@ public:
// Custom extended repository methods here
static int UpdateDuration(Database& db, int instance_id, uint32_t new_duration)
static int UpdateDuration(Database& db, uint16 instance_id, uint32_t new_duration)
{
auto results = db.QueryDatabase(fmt::format(
"UPDATE {} SET duration = {} WHERE {} = {};",
TableName(), new_duration, PrimaryKey(), instance_id
));
auto results = db.QueryDatabase(
fmt::format(
"UPDATE `{}` SET `duration` = {} WHERE `{}` = {}",
TableName(),
new_duration,
PrimaryKey(),
instance_id
)
);
return (results.Success() ? results.RowsAffected() : 0);
return results.Success() ? results.RowsAffected() : 0;
}
static uint32 GetRemainingTimeByInstanceID(Database& db, uint16 instance_id)
{
auto results = db.QueryDatabase(
fmt::format(
SQL(
SELECT ((start_time + duration) - UNIX_TIMESTAMP()) AS `remaining` FROM `{}`
WHERE `id` = {}
),
TableName(),
instance_id
)
);
if (!results.Success() || !results.RowCount()) {
return 0;
}
auto row = results.begin();
return Strings::ToUnsignedInt(row[0]);
}
};