iFacility  1.0
Проект является реализацией ИС "Предприятие"
database.h
Go to the documentation of this file.
1 #ifndef DATABASE_H
2 #define DATABASE_H
3 
4 #include <algorithm>
5 #include <functional>
6 
7 #include <QFile>
8 #include <QDataStream>
9 #include <QVector>
10 #include <QString>
11 
12 #include "../objects/profession.h"
13 #include "../objects/user.h"
14 
15 typedef std::function<bool(User)> UserPredicat; //< Тип функции-предиката для фильтров и удаления
16 
22 class Database {
23 private:
25  static Database *mInstance;
27  static const QString mFilename;
28 
34  Database() = default;
35 
37  QVector<Profession> mProfessions;
39  QVector<User> mUsers;
40 
47  QVector<User*> findUserByPredicat(UserPredicat predicat);
48 
49 public:
55  static Database* instance();
61  QVector<Profession> professions() const;
67  QVector<User> users() const;
68 
76  bool addUser(User usr);
83  User* getUser(UID uid);
90  User* getUser(QString login);
97  QVector<User*> getUsersByType(UserType type);
104  QVector<User*> getUsersByProfession(PID pid);
112  bool removeUser(UID uid);
113 
121  bool addProfession(Profession prof);
136  bool removeProfession(PID pid);
137 
142  void save();
147  void load();
148 };
149 
150 #endif // DATABASE_H
Класс базы данных
Definition: database.h:22
void load()
Записывает данные системы на диск
Definition: database.cpp:108
QVector< User * > getUsersByProfession(PID pid)
Возвращает список пользователей по принадлежности к профессии
Definition: database.cpp:55
void save()
Считывает данный с диска в систему
Definition: database.cpp:100
User * getUser(UID uid)
Возвращает пользователя по уникальному идентификатору
Definition: database.cpp:38
QVector< User * > getUsersByType(UserType type)
Возвращает список пользователей по типу аккаунта
Definition: database.cpp:50
bool addProfession(Profession prof)
Добавляет профессию в систему
Definition: database.cpp:71
static Database * instance()
Возвращает статический объекта класса
Definition: database.cpp:6
bool addUser(User usr)
Добавляет пользователя в систему
Definition: database.cpp:18
bool removeUser(UID uid)
Удалаяет пользователя из системы по уникальному идентификатору
Definition: database.cpp:60
Profession * getProfession(PID pid)
Возвращает профессию по уникальному идентификатору
Definition: database.cpp:79
QVector< User > users() const
Возвращает список пользователй системы
Definition: database.cpp:14
QVector< Profession > professions() const
Возвращает список профессий системы
Definition: database.cpp:10
bool removeProfession(PID pid)
Удаляет профессию из системы по уникальному идентификатору
Definition: database.cpp:85
Класс сущности профессии
Definition: profession.h:14
Класс сущности пользователя
Definition: user.h:26
std::function< bool(User)> UserPredicat
Definition: database.h:15
QUuid PID
Definition: profession.h:8
UserType
Набор возможных типов аккаунта пользователя
Definition: user.h:16
QUuid UID
Definition: user.h:12