From 09dca29c8898916772c2a2a6b86b625c812007ed Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 7 Feb 2017 17:20:07 -0500 Subject: Normalize databases by not allowing generic Object references Remove redis database support --- modules/operserv/info.cpp | 44 +++++++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 11 deletions(-) (limited to 'modules/operserv') diff --git a/modules/operserv/info.cpp b/modules/operserv/info.cpp index c052c46ae..7a90c1bf6 100644 --- a/modules/operserv/info.cpp +++ b/modules/operserv/info.cpp @@ -27,15 +27,19 @@ class OperInfoImpl : public OperInfo { friend class OperInfoType; - Serialize::Storage target; + Serialize::Storage account; + Serialize::Storage channel; Serialize::Storage info, creator; Serialize::Storage created; public: using OperInfo::OperInfo; - Serialize::Object *GetTarget() override; - void SetTarget(Serialize::Object *) override; + NickServ::Account *GetAccount() override; + void SetAccount(NickServ::Account *) override; + + ChanServ::Channel *GetChannel() override; + void SetChannel(ChanServ::Channel *) override; Anope::string GetInfo() override; void SetInfo(const Anope::string &) override; @@ -50,12 +54,14 @@ class OperInfoImpl : public OperInfo class OperInfoType : public Serialize::Type { public: - Serialize::ObjectField target; + Serialize::ObjectField account; + Serialize::ObjectField channel; Serialize::Field info, creator; Serialize::Field created; OperInfoType(Module *c) : Serialize::Type(c) - , target(this, "target", &OperInfoImpl::target, true) + , account(this, "account", &OperInfoImpl::account, true) + , channel(this, "channel", &OperInfoImpl::channel, true) , info(this, "info", &OperInfoImpl::info) , creator(this, "adder", &OperInfoImpl::creator) , created(this, "created", &OperInfoImpl::created) @@ -63,14 +69,24 @@ class OperInfoType : public Serialize::Type } }; -Serialize::Object *OperInfoImpl::GetTarget() +NickServ::Account *OperInfoImpl::GetAccount() +{ + return Get(&OperInfoType::account); +} + +void OperInfoImpl::SetAccount(NickServ::Account *account) { - return Get(&OperInfoType::target); + Set(&OperInfoType::account, account); } -void OperInfoImpl::SetTarget(Serialize::Object *t) +ChanServ::Channel *OperInfoImpl::GetChannel() { - Set(&OperInfoType::target, t); + return Get(&OperInfoType::channel); +} + +void OperInfoImpl::SetChannel(ChanServ::Channel *channel) +{ + Set(&OperInfoType::channel, channel); } Anope::string OperInfoImpl::GetInfo() @@ -118,7 +134,10 @@ class CommandOSInfo : public Command { const Anope::string &cmd = params[0], target = params[1], info = params.size() > 2 ? params[2] : ""; + NickServ::Account *account = nullptr; + ChanServ::Channel *channel = nullptr; Serialize::Object *e; + if (IRCD->IsChannelValid(target)) { ChanServ::Channel *ci = ChanServ::Find(target); @@ -128,6 +147,7 @@ class CommandOSInfo : public Command return; } + channel = ci; e = ci; } else @@ -139,7 +159,8 @@ class CommandOSInfo : public Command return; } - e = na->GetAccount(); + account = na->GetAccount(); + e = account; } if (cmd.equals_ci("ADD")) @@ -165,7 +186,8 @@ class CommandOSInfo : public Command } OperInfo *o = Serialize::New(); - o->SetTarget(e); + o->SetAccount(account); + o->SetChannel(channel); o->SetInfo(info); o->SetCreator(source.GetNick()); o->SetCreated(Anope::CurTime); -- cgit