2021-08-22 20:23:06 +02:00
|
|
|
#ifndef USER_MODEL_H
|
|
|
|
#define USER_MODEL_H
|
|
|
|
|
2021-11-01 19:14:55 +01:00
|
|
|
#include "core/string.h"
|
|
|
|
#include "core/containers/vector.h"
|
|
|
|
|
2021-08-22 20:23:06 +02:00
|
|
|
#include "core/object.h"
|
|
|
|
|
2021-08-22 21:46:24 +02:00
|
|
|
#include "user.h"
|
2021-08-22 20:23:06 +02:00
|
|
|
|
|
|
|
class UserModel : public Object {
|
2021-10-31 10:17:45 +01:00
|
|
|
RCPP_OBJECT(UserModel, Object);
|
|
|
|
|
2021-08-22 20:23:06 +02:00
|
|
|
public:
|
2021-11-10 19:35:02 +01:00
|
|
|
virtual Ref<User> get_user(const int id);
|
|
|
|
virtual Ref<User> get_user(const String &user_name_input);
|
|
|
|
virtual void save_user(Ref<User> &user);
|
2021-08-22 21:46:24 +02:00
|
|
|
|
2021-11-10 19:35:02 +01:00
|
|
|
virtual Vector<Ref<User> > get_all();
|
|
|
|
|
|
|
|
virtual Ref<User> create_user();
|
2021-08-22 21:46:24 +02:00
|
|
|
|
2021-11-01 19:14:55 +01:00
|
|
|
bool is_username_taken(const String &user_name_input);
|
|
|
|
bool is_email_taken(const String &email_input);
|
2021-08-22 21:46:24 +02:00
|
|
|
|
2021-11-01 19:14:55 +01:00
|
|
|
virtual bool check_password(const Ref<User> &user, const String &p_password);
|
|
|
|
virtual void create_password(Ref<User> &user, const String &p_password);
|
|
|
|
virtual String hash_password(const Ref<User> &user, const String &p_password);
|
2021-08-22 21:46:24 +02:00
|
|
|
|
|
|
|
virtual void create_table();
|
|
|
|
virtual void drop_table();
|
|
|
|
virtual void migrate();
|
2021-11-14 02:37:19 +01:00
|
|
|
virtual void create_test_users();
|
2021-08-22 20:41:59 +02:00
|
|
|
|
2021-08-22 20:23:06 +02:00
|
|
|
static UserModel *get_singleton();
|
|
|
|
|
|
|
|
UserModel();
|
|
|
|
~UserModel();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
static UserModel *_self;
|
2021-08-22 21:46:24 +02:00
|
|
|
|
2021-11-01 19:14:55 +01:00
|
|
|
String _file_path;
|
2021-08-22 21:46:24 +02:00
|
|
|
|
2021-11-01 19:14:55 +01:00
|
|
|
static String _path;
|
|
|
|
static String _table_name;
|
2021-08-22 20:23:06 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|