diff options
| author | Adam <Adam@anope.org> | 2017-02-07 17:20:07 -0500 |
|---|---|---|
| committer | Adam <Adam@anope.org> | 2017-02-07 17:20:07 -0500 |
| commit | 09dca29c8898916772c2a2a6b86b625c812007ed (patch) | |
| tree | 1b28f4751feec3ea2b46fa0afb061da7926f3a47 /modules/operserv | |
| parent | 8b694bc392c36551e428b84454efb81cdbc8bcd3 (diff) | |
Normalize databases by not allowing generic Object references
Remove redis database support
Diffstat (limited to 'modules/operserv')
| -rw-r--r-- | modules/operserv/info.cpp | 44 |
1 files changed, 33 insertions, 11 deletions
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<Serialize::Object *> target; + Serialize::Storage<NickServ::Account *> account; + Serialize::Storage<ChanServ::Channel *> channel; Serialize::Storage<Anope::string> info, creator; Serialize::Storage<time_t> 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<OperInfoImpl> { public: - Serialize::ObjectField<OperInfoImpl, Serialize::Object *> target; + Serialize::ObjectField<OperInfoImpl, NickServ::Account *> account; + Serialize::ObjectField<OperInfoImpl, ChanServ::Channel *> channel; Serialize::Field<OperInfoImpl, Anope::string> info, creator; Serialize::Field<OperInfoImpl, time_t> created; OperInfoType(Module *c) : Serialize::Type<OperInfoImpl>(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<OperInfoImpl> } }; -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<OperInfo *>(); - o->SetTarget(e); + o->SetAccount(account); + o->SetChannel(channel); o->SetInfo(info); o->SetCreator(source.GetNick()); o->SetCreated(Anope::CurTime); |
