#ifndef USER_DB_H #define USER_DB_H #include "core/os/rw_lock.h" #include "core/object/reference.h" #include "core/string/ustring.h" #include "core/containers/vector.h" #include "core/object/object.h" class UserManager; class User; class UserDB : public Object { GDCLASS(UserDB, Object); public: //TODO //get_user_id //get_user_index //get_user_count //get_users //get_users_bind //delete_user_id //delete_user_index //delete_user_name //remove_user... //clear Ref get_user(const int id); Ref get_user_name(const String &user_name); Ref get_user_email(const String &user_email); void save_user(const Ref &user); Ref create_user(); bool is_username_taken(const String &user_name); bool is_email_taken(const String &email); UserManager *get_user_manager(); void set_user_manager(UserManager *um); static UserDB *get_singleton(); UserDB(); ~UserDB(); protected: static void _bind_methods(); Node *get_user_manager_bind(); UserManager *_user_manager; static UserDB *_self; Vector> _users; RWLock _lock; }; #endif