summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorSadie Powell <sadie@witchery.services>2024-08-14 02:40:48 +0100
committerSadie Powell <sadie@witchery.services>2024-08-14 05:47:55 +0100
commit528b5938ec71abed396248cf5e00f346e685aaea (patch)
treee923fed32be3fb62f946d44c633cd85ce855550b /modules
parent03bee1706383d2766923e5d8edbb90d7ad1948b6 (diff)
Automatically determine SQL column type from the field.
Also add more column types to ensure we are storing data in the best format in the database.
Diffstat (limited to 'modules')
-rw-r--r--modules/botserv/bs_badwords.cpp6
-rw-r--r--modules/botserv/bs_kick.cpp39
-rw-r--r--modules/chanserv/cs_entrymsg.cpp8
-rw-r--r--modules/chanserv/cs_log.cpp16
-rw-r--r--modules/chanserv/cs_mode.cpp12
-rw-r--r--modules/chanserv/cs_seen.cpp14
-rw-r--r--modules/chanserv/cs_set.cpp2
-rw-r--r--modules/chanserv/cs_set_misc.cpp6
-rw-r--r--modules/chanserv/cs_suspend.cpp10
-rw-r--r--modules/extra/mysql.cpp63
-rw-r--r--modules/extra/sqlite.cpp65
-rw-r--r--modules/hostserv/hs_request.cpp8
-rw-r--r--modules/nickserv/ns_ajoin.cpp8
-rw-r--r--modules/nickserv/ns_cert.cpp4
-rw-r--r--modules/nickserv/ns_set.cpp2
-rw-r--r--modules/nickserv/ns_set_misc.cpp6
-rw-r--r--modules/nickserv/ns_suspend.cpp10
-rw-r--r--modules/operserv/os_dns.cpp14
-rw-r--r--modules/operserv/os_forbid.cpp12
-rw-r--r--modules/operserv/os_ignore.cpp8
-rw-r--r--modules/operserv/os_info.cpp8
-rw-r--r--modules/operserv/os_news.cpp8
-rw-r--r--modules/operserv/os_stats.cpp4
23 files changed, 207 insertions, 126 deletions
diff --git a/modules/botserv/bs_badwords.cpp b/modules/botserv/bs_badwords.cpp
index e72e32a6e..2396a91c6 100644
--- a/modules/botserv/bs_badwords.cpp
+++ b/modules/botserv/bs_badwords.cpp
@@ -21,9 +21,9 @@ struct BadWordImpl final
void Serialize(Serialize::Data &data) const override
{
- data["ci"] << this->chan;
- data["word"] << this->word;
- data.SetType("type", Serialize::Data::DT_INT); data["type"] << this->type;
+ data.Store("ci", this->chan);
+ data.Store("word", this->word);
+ data.Store("type", this->type);
}
static Serializable *Unserialize(Serializable *obj, Serialize::Data &);
diff --git a/modules/botserv/bs_kick.cpp b/modules/botserv/bs_kick.cpp
index f2a39dbf1..ba2ace0dd 100644
--- a/modules/botserv/bs_kick.cpp
+++ b/modules/botserv/bs_kick.cpp
@@ -53,25 +53,28 @@ struct KickerDataImpl final
if (kd == NULL)
return;
- data.SetType("kickerdata:amsgs", Serialize::Data::DT_INT); data["kickerdata:amsgs"] << kd->amsgs;
- data.SetType("kickerdata:badwords", Serialize::Data::DT_INT); data["kickerdata:badwords"] << kd->badwords;
- data.SetType("kickerdata:bolds", Serialize::Data::DT_INT); data["kickerdata:bolds"] << kd->bolds;
- data.SetType("kickerdata:caps", Serialize::Data::DT_INT); data["kickerdata:caps"] << kd->caps;
- data.SetType("kickerdata:colors", Serialize::Data::DT_INT); data["kickerdata:colors"] << kd->colors;
- data.SetType("kickerdata:flood", Serialize::Data::DT_INT); data["kickerdata:flood"] << kd->flood;
- data.SetType("kickerdata:italics", Serialize::Data::DT_INT); data["kickerdata:italics"] << kd->italics;
- data.SetType("kickerdata:repeat", Serialize::Data::DT_INT); data["kickerdata:repeat"] << kd->repeat;
- data.SetType("kickerdata:reverses", Serialize::Data::DT_INT); data["kickerdata:reverses"] << kd->reverses;
- data.SetType("kickerdata:underlines", Serialize::Data::DT_INT); data["kickerdata:underlines"] << kd->underlines;
- data.SetType("capsmin", Serialize::Data::DT_INT); data["capsmin"] << kd->capsmin;
- data.SetType("capspercent", Serialize::Data::DT_INT); data["capspercent"] << kd->capspercent;
- data.SetType("floodlines", Serialize::Data::DT_INT); data["floodlines"] << kd->floodlines;
- data.SetType("floodsecs", Serialize::Data::DT_INT); data["floodsecs"] << kd->floodsecs;
- data.SetType("repeattimes", Serialize::Data::DT_INT); data["repeattimes"] << kd->repeattimes;
- data.SetType("dontkickops", Serialize::Data::DT_INT); data["dontkickops"] << kd->dontkickops;
- data.SetType("dontkickvoices", Serialize::Data::DT_INT); data["dontkickvoices"] << kd->dontkickvoices;
+ data.Store("kickerdata:amsgs", kd->amsgs);
+ data.Store("kickerdata:badwords", kd->badwords);
+ data.Store("kickerdata:bolds", kd->bolds);
+ data.Store("kickerdata:caps", kd->caps);
+ data.Store("kickerdata:colors", kd->colors);
+ data.Store("kickerdata:flood", kd->flood);
+ data.Store("kickerdata:italics", kd->italics);
+ data.Store("kickerdata:repeat", kd->repeat);
+ data.Store("kickerdata:reverses", kd->reverses);
+ data.Store("kickerdata:underlines", kd->underlines);
+ data.Store("capsmin", kd->capsmin);
+ data.Store("capspercent", kd->capspercent);
+ data.Store("floodlines", kd->floodlines);
+ data.Store("floodsecs", kd->floodsecs);
+ data.Store("repeattimes", kd->repeattimes);
+ data.Store("dontkickops", kd->dontkickops);
+ data.Store("dontkickvoices", kd->dontkickvoices);
+
+ std::ostringstream oss;
for (auto ttbtype : kd->ttb)
- data["ttb"] << ttbtype << " ";
+ oss << ttbtype << " ";
+ data.Store("ttb", oss.str());
}
void ExtensibleUnserialize(Extensible *e, Serializable *s, Serialize::Data &data) override
diff --git a/modules/chanserv/cs_entrymsg.cpp b/modules/chanserv/cs_entrymsg.cpp
index efe13d1aa..808582bdc 100644
--- a/modules/chanserv/cs_entrymsg.cpp
+++ b/modules/chanserv/cs_entrymsg.cpp
@@ -32,10 +32,10 @@ struct EntryMsgImpl final
void Serialize(Serialize::Data &data) const override
{
- data["ci"] << this->chan;
- data["creator"] << this->creator;
- data["message"] << this->message;
- data.SetType("when", Serialize::Data::DT_INT); data["when"] << this->when;
+ data.Store("ci", this->chan);
+ data.Store("creator", this->creator);
+ data.Store("message", this->message);
+ data.Store("when", this->when);
}
static Serializable *Unserialize(Serializable *obj, Serialize::Data &data);
diff --git a/modules/chanserv/cs_log.cpp b/modules/chanserv/cs_log.cpp
index defd38287..e06d3d42b 100644
--- a/modules/chanserv/cs_log.cpp
+++ b/modules/chanserv/cs_log.cpp
@@ -37,14 +37,14 @@ struct LogSettingImpl final
void Serialize(Serialize::Data &data) const override
{
- data["ci"] << chan;
- data["service_name"] << service_name;
- data["command_service"] << command_service;
- data["command_name"] << command_name;
- data["method"] << method;
- data["extra"] << extra;
- data["creator"] << creator;
- data.SetType("created", Serialize::Data::DT_INT); data["created"] << created;
+ data.Store("ci", chan);
+ data.Store("service_name", service_name);
+ data.Store("command_service", command_service);
+ data.Store("command_name", command_name);
+ data.Store("method", method);
+ data.Store("extra", extra);
+ data.Store("creator", creator);
+ data.Store("created", created);
}
static Serializable *Unserialize(Serializable *obj, Serialize::Data &data)
diff --git a/modules/chanserv/cs_mode.cpp b/modules/chanserv/cs_mode.cpp
index 1ea0e9716..9962d1d2f 100644
--- a/modules/chanserv/cs_mode.cpp
+++ b/modules/chanserv/cs_mode.cpp
@@ -205,12 +205,12 @@ struct ModeLocksImpl final
void ModeLockImpl::Serialize(Serialize::Data &data) const
{
- data["ci"] << this->ci;
- data["set"] << this->set;
- data["name"] << this->name;
- data["param"] << this->param;
- data["setter"] << this->setter;
- data.SetType("created", Serialize::Data::DT_INT); data["created"] << this->created;
+ data.Store("ci", this->ci);
+ data.Store("set", this->set);
+ data.Store("name", this->name);
+ data.Store("param", this->param);
+ data.Store("setter", this->setter);
+ data.Store("created", this->created);
}
Serializable *ModeLockImpl::Unserialize(Serializable *obj, Serialize::Data &data)
diff --git a/modules/chanserv/cs_seen.cpp b/modules/chanserv/cs_seen.cpp
index 1603983f5..97d23ee70 100644
--- a/modules/chanserv/cs_seen.cpp
+++ b/modules/chanserv/cs_seen.cpp
@@ -46,13 +46,13 @@ struct SeenInfo final
void Serialize(Serialize::Data &data) const override
{
- data["nick"] << nick;
- data["vhost"] << vhost;
- data["type"] << type;
- data["nick2"] << nick2;
- data["channel"] << channel;
- data["message"] << message;
- data.SetType("last", Serialize::Data::DT_INT); data["last"] << last;
+ data.Store("nick", nick);
+ data.Store("vhost", vhost);
+ data.Store("type", type);
+ data.Store("nick2", nick2);
+ data.Store("channel", channel);
+ data.Store("message", message);
+ data.Store("last", last);
}
static Serializable *Unserialize(Serializable *obj, Serialize::Data &data)
diff --git a/modules/chanserv/cs_set.cpp b/modules/chanserv/cs_set.cpp
index 932d1f43c..4f39574af 100644
--- a/modules/chanserv/cs_set.cpp
+++ b/modules/chanserv/cs_set.cpp
@@ -1068,7 +1068,7 @@ class CSSet final
if (!last_value.empty())
modes += "," + last_value;
}
- data["last_modes"] << modes;
+ data.Store("last_modes", modes);
}
void ExtensibleUnserialize(Extensible *e, Serializable *s, Serialize::Data &data) override
diff --git a/modules/chanserv/cs_set_misc.cpp b/modules/chanserv/cs_set_misc.cpp
index 685ab8022..4ad0ee7a1 100644
--- a/modules/chanserv/cs_set_misc.cpp
+++ b/modules/chanserv/cs_set_misc.cpp
@@ -46,9 +46,9 @@ struct CSMiscData final
void Serialize(Serialize::Data &sdata) const override
{
- sdata["ci"] << this->object;
- sdata["name"] << this->name;
- sdata["data"] << this->data;
+ sdata.Store("ci", this->object);
+ sdata.Store("name", this->name);
+ sdata.Store("data", this->data);
}
static Serializable *Unserialize(Serializable *obj, Serialize::Data &data)
diff --git a/modules/chanserv/cs_suspend.cpp b/modules/chanserv/cs_suspend.cpp
index 03eb36c48..846f4fd59 100644
--- a/modules/chanserv/cs_suspend.cpp
+++ b/modules/chanserv/cs_suspend.cpp
@@ -20,11 +20,11 @@ struct CSSuspendInfo final
void Serialize(Serialize::Data &data) const override
{
- data["chan"] << what;
- data["by"] << by;
- data["reason"] << reason;
- data["time"] << when;
- data["expires"] << expires;
+ data.Store("chan", what);
+ data.Store("by", by);
+ data.Store("reason", reason);
+ data.Store("time", when);
+ data.Store("expires", expires);
}
static Serializable *Unserialize(Serializable *obj, Serialize::Data &data)
diff --git a/modules/extra/mysql.cpp b/modules/extra/mysql.cpp
index 193427fdb..caa02d8f0 100644
--- a/modules/extra/mysql.cpp
+++ b/modules/extra/mysql.cpp
@@ -158,6 +158,29 @@ public:
Anope::string BuildQuery(const Query &q);
Anope::string FromUnixtime(time_t) override;
+
+ Anope::string GetColumnType(Serialize::DataType dt)
+ {
+ switch (dt)
+ {
+ case Serialize::DataType::BOOL:
+ return "TINYINT NOT NULL";
+
+ case Serialize::DataType::FLOAT:
+ return "DOUBLE PRECISION NOT NULL";
+
+ case Serialize::DataType::INT:
+ return "BIGINT NOT NULL";
+
+ case Serialize::DataType::TEXT:
+ return "TEXT";
+
+ case Serialize::DataType::UINT:
+ return "BIGINT UNSIGNED NOT NULL";
+ }
+
+ return "TEXT"; // Should never be reached
+ }
};
/** The SQL thread used to execute queries
@@ -410,17 +433,13 @@ std::vector<Query> MySQLService::CreateTable(const Anope::string &table, const D
if (known_cols.empty())
{
- Anope::string query_text = "CREATE TABLE `" + table + "` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,"
+ Anope::string query_text = "CREATE TABLE `" + table + "` (`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE,"
" `timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP";
for (const auto &[column, _] : data.data)
{
known_cols.insert(column);
- query_text += ", `" + column + "` ";
- if (data.GetType(column) == Serialize::Data::DT_INT)
- query_text += "int";
- else
- query_text += "text";
+ query_text += ", `" + column + "` " + GetColumnType(data.GetType(column));
}
query_text += ", PRIMARY KEY (`id`), KEY `timestamp_idx` (`timestamp`)) ROW_FORMAT=DYNAMIC";
queries.push_back(query_text);
@@ -434,11 +453,7 @@ std::vector<Query> MySQLService::CreateTable(const Anope::string &table, const D
known_cols.insert(column);
- Anope::string query_text = "ALTER TABLE `" + table + "` ADD `" + column + "` ";
- if (data.GetType(column) == Serialize::Data::DT_INT)
- query_text += "int";
- else
- query_text += "text";
+ Anope::string query_text = "ALTER TABLE `" + table + "` ADD `" + column + "` " + GetColumnType(data.GetType(column));
queries.push_back(query_text);
}
@@ -474,11 +489,29 @@ Query MySQLService::BuildInsert(const Anope::string &table, unsigned int id, Dat
Anope::string buf;
*value >> buf;
- bool escape = true;
- if (buf.empty())
+ auto escape = true;
+ switch (data.GetType(field))
{
- buf = "NULL";
- escape = false;
+ case Serialize::DataType::BOOL:
+ case Serialize::DataType::FLOAT:
+ case Serialize::DataType::INT:
+ case Serialize::DataType::UINT:
+ {
+ if (buf.empty())
+ buf = "0";
+ escape = false;
+ break;
+ }
+
+ case Serialize::DataType::TEXT:
+ {
+ if (buf.empty())
+ {
+ buf = "NULL";
+ escape = false;
+ }
+ break;
+ }
}
query.SetValue(field, buf, escape);
diff --git a/modules/extra/sqlite.cpp b/modules/extra/sqlite.cpp
index 2454c838c..2c6ccc6db 100644
--- a/modules/extra/sqlite.cpp
+++ b/modules/extra/sqlite.cpp
@@ -68,6 +68,31 @@ public:
Anope::string BuildQuery(const Query &q);
Anope::string FromUnixtime(time_t) override;
+
+ Anope::string GetColumnType(Serialize::DataType dt)
+ {
+ switch (dt)
+ {
+ case Serialize::DataType::BOOL:
+ return "INTEGER";
+
+ case Serialize::DataType::FLOAT:
+ return "REAL";
+
+ case Serialize::DataType::INT:
+ return "INTEGER";
+
+ case Serialize::DataType::TEXT:
+ return "TEXT";
+
+ // SQLite lacks support for 64-bit unsigned integers so we have to
+ // store them as text columns instead.
+ case Serialize::DataType::UINT:
+ return "TEXT";
+ }
+
+ return "TEXT"; // Should never be reached
+ }
};
class ModuleSQLite final
@@ -237,11 +262,7 @@ std::vector<Query> SQLiteService::CreateTable(const Anope::string &table, const
{
known_cols.insert(column);
- query_text += ", `" + column + "` ";
- if (data.GetType(column) == Serialize::Data::DT_INT)
- query_text += "int(11)";
- else
- query_text += "text";
+ query_text += ", `" + column + "` " + GetColumnType(data.GetType(column));
}
query_text += ")";
@@ -266,11 +287,7 @@ std::vector<Query> SQLiteService::CreateTable(const Anope::string &table, const
known_cols.insert(column);
- Anope::string query_text = "ALTER TABLE `" + table + "` ADD `" + column + "` ";
- if (data.GetType(column) == Serialize::Data::DT_INT)
- query_text += "int(11)";
- else
- query_text += "text";
+ Anope::string query_text = "ALTER TABLE `" + table + "` ADD `" + column + "` " + GetColumnType(data.GetType(column));;
queries.push_back(query_text);
}
@@ -307,7 +324,33 @@ Query SQLiteService::BuildInsert(const Anope::string &table, unsigned int id, Da
{
Anope::string buf;
*value >> buf;
- query.SetValue(field, buf);
+
+ auto escape = true;
+ switch (data.GetType(field))
+ {
+ case Serialize::DataType::BOOL:
+ case Serialize::DataType::FLOAT:
+ case Serialize::DataType::INT:
+ {
+ if (buf.empty())
+ buf = "0";
+ escape = false;
+ break;
+ }
+
+ case Serialize::DataType::TEXT:
+ case Serialize::DataType::UINT:
+ {
+ if (buf.empty())
+ {
+ buf = "NULL";
+ escape = false;
+ }
+ break;
+ }
+ }
+
+ query.SetValue(field, buf, escape);
}
return query;
diff --git a/modules/hostserv/hs_request.cpp b/modules/hostserv/hs_request.cpp
index c11a1ad90..e6f30fd70 100644
--- a/modules/hostserv/hs_request.cpp
+++ b/modules/hostserv/hs_request.cpp
@@ -32,10 +32,10 @@ struct HostRequestImpl final
void Serialize(Serialize::Data &data) const override
{
- data["nick"] << this->nick;
- data["ident"] << this->ident;
- data["host"] << this->host;
- data.SetType("time", Serialize::Data::DT_INT); data["time"] << this->time;
+ data.Store("nick", this->nick);
+ data.Store("ident", this->ident);
+ data.Store("host", this->host);
+ data.Store("time", this->time);
}
static Serializable *Unserialize(Serializable *obj, Serialize::Data &data)
diff --git a/modules/nickserv/ns_ajoin.cpp b/modules/nickserv/ns_ajoin.cpp
index 91e700e4a..5e4419b85 100644
--- a/modules/nickserv/ns_ajoin.cpp
+++ b/modules/nickserv/ns_ajoin.cpp
@@ -40,14 +40,14 @@ struct AJoinEntry final
}
}
- void Serialize(Serialize::Data &sd) const override
+ void Serialize(Serialize::Data &data) const override
{
if (!this->owner)
return;
- sd["owner"] << this->owner->display;
- sd["channel"] << this->channel;
- sd["key"] << this->key;
+ data.Store("owner", this->owner->display);
+ data.Store("channel", this->channel);
+ data.Store("key", this->key);
}
static Serializable *Unserialize(Serializable *obj, Serialize::Data &sd)
diff --git a/modules/nickserv/ns_cert.cpp b/modules/nickserv/ns_cert.cpp
index a5567b8e8..5594b2e57 100644
--- a/modules/nickserv/ns_cert.cpp
+++ b/modules/nickserv/ns_cert.cpp
@@ -168,8 +168,10 @@ public:
if (c == NULL || !c->GetCertCount())
return;
+ std::ostringstream oss;
for (unsigned i = 0; i < c->GetCertCount(); ++i)
- data["cert"] << c->GetCert(i) << " ";
+ oss << c->GetCert(i) << " ";
+ data.Store("cert", oss.str());
}
void ExtensibleUnserialize(Extensible *e, Serializable *s, Serialize::Data &data) override
diff --git a/modules/nickserv/ns_set.cpp b/modules/nickserv/ns_set.cpp
index 5bd3a4d3d..b4dbe0a44 100644
--- a/modules/nickserv/ns_set.cpp
+++ b/modules/nickserv/ns_set.cpp
@@ -1108,7 +1108,7 @@ class NSSet final
if (!last_value.empty())
modes += "," + last_value;
}
- data["last_modes"] << modes;
+ data.Store("last_modes", modes);
}
void ExtensibleUnserialize(Extensible *e, Serializable *s, Serialize::Data &data) override
diff --git a/modules/nickserv/ns_set_misc.cpp b/modules/nickserv/ns_set_misc.cpp
index 6f8ad0f4e..87b50ebc4 100644
--- a/modules/nickserv/ns_set_misc.cpp
+++ b/modules/nickserv/ns_set_misc.cpp
@@ -46,9 +46,9 @@ struct NSMiscData final
void Serialize(Serialize::Data &sdata) const override
{
- sdata["nc"] << this->object;
- sdata["name"] << this->name;
- sdata["data"] << this->data;
+ sdata.Store("nc", this->object);
+ sdata.Store("name", this->name);
+ sdata.Store("data", this->data);
}
static Serializable *Unserialize(Serializable *obj, Serialize::Data &data)
diff --git a/modules/nickserv/ns_suspend.cpp b/modules/nickserv/ns_suspend.cpp
index cfe70861e..79c7b8a08 100644
--- a/modules/nickserv/ns_suspend.cpp
+++ b/modules/nickserv/ns_suspend.cpp
@@ -22,11 +22,11 @@ struct NSSuspendInfo final
void Serialize(Serialize::Data &data) const override
{
- data["nick"] << what;
- data["by"] << by;
- data["reason"] << reason;
- data["time"] << when;
- data["expires"] << expires;
+ data.Store("nick", what);
+ data.Store("by", by);
+ data.Store("reason", reason);
+ data.Store("time", when);
+ data.Store("expires", expires);
}
static Serializable *Unserialize(Serializable *obj, Serialize::Data &data)
diff --git a/modules/operserv/os_dns.cpp b/modules/operserv/os_dns.cpp
index 18e53b25a..88f39b185 100644
--- a/modules/operserv/os_dns.cpp
+++ b/modules/operserv/os_dns.cpp
@@ -39,10 +39,10 @@ struct DNSZone final
void Serialize(Serialize::Data &data) const override
{
- data["name"] << name;
+ data.Store("name", name);
unsigned count = 0;
for (const auto &server : servers)
- data["server" + Anope::ToString(count++)] << server;
+ data.Store("server" + Anope::ToString(count++), server);
}
static Serializable *Unserialize(Serializable *obj, Serialize::Data &data)
@@ -144,14 +144,14 @@ public:
void Serialize(Serialize::Data &data) const override
{
- data["server_name"] << server_name;
+ data.Store("server_name", server_name);
for (unsigned i = 0; i < ips.size(); ++i)
- data["ip" + Anope::ToString(i)] << ips[i];
- data["limit"] << limit;
- data["pooled"] << pooled;
+ data.Store("ip" + Anope::ToString(i), ips[i]);
+ data.Store("limit", limit);
+ data.Store("pooled", pooled);
unsigned count = 0;
for (const auto &zone : zones)
- data["zone" + Anope::ToString(count++)] << zone;
+ data.Store("zone" + Anope::ToString(count++), zone);
}
static Serializable *Unserialize(Serializable *obj, Serialize::Data &data)
diff --git a/modules/operserv/os_forbid.cpp b/modules/operserv/os_forbid.cpp
index a5a8b79ea..032cf0da7 100644
--- a/modules/operserv/os_forbid.cpp
+++ b/modules/operserv/os_forbid.cpp
@@ -25,12 +25,12 @@ struct ForbidDataImpl final
void ForbidDataImpl::Serialize(Serialize::Data &data) const
{
- data["mask"] << this->mask;
- data["creator"] << this->creator;
- data["reason"] << this->reason;
- data["created"] << this->created;
- data["expires"] << this->expires;
- data["type"] << this->type;
+ data.Store("mask", this->mask);
+ data.Store("creator", this->creator);
+ data.Store("reason", this->reason);
+ data.Store("created", this->created);
+ data.Store("expires", this->expires);
+ data.Store("type", this->type);
}
Serializable *ForbidDataImpl::Unserialize(Serializable *obj, Serialize::Data &data)
diff --git a/modules/operserv/os_ignore.cpp b/modules/operserv/os_ignore.cpp
index e4cff0d44..e7db65a62 100644
--- a/modules/operserv/os_ignore.cpp
+++ b/modules/operserv/os_ignore.cpp
@@ -30,10 +30,10 @@ IgnoreDataImpl::~IgnoreDataImpl()
void IgnoreDataImpl::Serialize(Serialize::Data &data) const
{
- data["mask"] << this->mask;
- data["creator"] << this->creator;
- data["reason"] << this->reason;
- data["time"] << this->time;
+ data.Store("mask", this->mask);
+ data.Store("creator", this->creator);
+ data.Store("reason", this->reason);
+ data.Store("time", this->time);
}
Serializable *IgnoreDataImpl::Unserialize(Serializable *obj, Serialize::Data &data)
diff --git a/modules/operserv/os_info.cpp b/modules/operserv/os_info.cpp
index 6ff1089ff..8b4472e74 100644
--- a/modules/operserv/os_info.cpp
+++ b/modules/operserv/os_info.cpp
@@ -28,10 +28,10 @@ struct OperInfoImpl final
void Serialize(Serialize::Data &data) const override
{
- data["target"] << target;
- data["info"] << info;
- data["adder"] << adder;
- data["created"] << created;
+ data.Store("target", target);
+ data.Store("info", info);
+ data.Store("adder", adder);
+ data.Store("created", created);
}
static Serializable *Unserialize(Serializable *obj, Serialize::Data &data);
diff --git a/modules/operserv/os_news.cpp b/modules/operserv/os_news.cpp
index 2cf011c0e..a862e177f 100644
--- a/modules/operserv/os_news.cpp
+++ b/modules/operserv/os_news.cpp
@@ -69,10 +69,10 @@ struct MyNewsItem final
{
void Serialize(Serialize::Data &data) const override
{
- data["type"] << this->type;
- data["text"] << this->text;
- data["who"] << this->who;
- data["time"] << this->time;
+ data.Store("type", this->type);
+ data.Store("text", this->text);
+ data.Store("who", this->who);
+ data.Store("time", this->time);
}
static Serializable *Unserialize(Serializable *obj, Serialize::Data &data)
diff --git a/modules/operserv/os_stats.cpp b/modules/operserv/os_stats.cpp
index 780151916..72d1a2cd7 100644
--- a/modules/operserv/os_stats.cpp
+++ b/modules/operserv/os_stats.cpp
@@ -24,8 +24,8 @@ struct Stats final
void Serialize(Serialize::Data &data) const override
{
- data["maxusercnt"] << MaxUserCount;
- data["maxusertime"] << MaxUserTime;
+ data.Store("maxusercnt", MaxUserCount);
+ data.Store("maxusertime", MaxUserTime);
}
static Serializable *Unserialize(Serializable *obj, Serialize::Data &data)