-#include "admin.h"
-#include "admin_conf.h"
-
-class ADMINS {
-public:
- virtual int Add(const std::string & login, const ADMIN * admin) = 0;
- virtual int Del(const std::string & login, const ADMIN * admin) = 0;
- virtual int Change(const ADMIN_CONF & ac, const ADMIN * admin) = 0;
- virtual const ADMIN * GetSysAdmin() const = 0;
- virtual const ADMIN * GetNoAdmin() const = 0;
- virtual bool FindAdmin(const std::string & l, ADMIN ** admin) = 0;
- virtual bool AdminExists(const std::string & login) const = 0;
- virtual bool AdminCorrect(const std::string & login,
- const std::string & password,
- ADMIN ** admin) = 0;
- virtual const std::string & GetStrError() const = 0;
-
- virtual int OpenSearch() const = 0;
- virtual int SearchNext(int, ADMIN_CONF * ac) const = 0;
- virtual int CloseSearch(int) const = 0;
+namespace STG
+{
+
+struct AdminConf;
+class Admin;
+
+struct Admins
+{
+ virtual ~Admins() = default;
+
+ virtual int add(const std::string& login, const Admin& admin) = 0;
+ virtual int del(const std::string& login, const Admin& admin) = 0;
+ virtual int change(const AdminConf& ac, const Admin& admin) = 0;
+ virtual const Admin& sysAdmin() const = 0;
+ virtual const Admin& noAdmin() const = 0;
+ virtual bool find(const std::string& login, Admin** admin) = 0;
+ virtual bool exists(const std::string& login) const = 0;
+ virtual bool correct(const std::string& login,
+ const std::string& password,
+ Admin** admin) = 0;
+ virtual const std::string& strError() const = 0;
+ virtual size_t count() const = 0;
+ virtual void fmap(std::function<void (const Admin&)> callback) const = 0;