iFacilityProject/iFacility/doxygen-docs/html/database_8h_source.html
2021-01-05 22:26:55 +07:00

149 lines
19 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>iFacility: db/database.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">iFacility
&#160;<span id="projectnumber">1.0</span>
</div>
<div id="projectbrief">Проект является реализацией ИС &quot;Предприятие&quot;</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_ce5981f09099a3fa6071b9eb8fe67a2c.html">db</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">database.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="database_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef DATABASE_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define DATABASE_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; </div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; </div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &lt;QFile&gt;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &lt;QDataStream&gt;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &lt;QVector&gt;</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &lt;QString&gt;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; </div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;../objects/profession.h&quot;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;../objects/user.h&quot;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; </div>
<div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="database_8h.html#a29e03a4bb2cab6fe570c1973a96868cc"> 15</a></span>&#160;<span class="keyword">typedef</span> std::function&lt;bool(<a class="code" href="class_user.html">User</a>)&gt; <a class="code" href="database_8h.html#a29e03a4bb2cab6fe570c1973a96868cc">UserPredicat</a>; <span class="comment">//&lt; Тип функции-предиката для фильтров и удаления</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
<div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="class_database.html"> 22</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_database.html">Database</a> {</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">static</span> <a class="code" href="class_database.html">Database</a> *mInstance;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> QString mFilename;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="class_database.html">Database</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; </div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; QVector&lt;Profession&gt; mProfessions;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; QVector&lt;User&gt; mUsers;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; QVector&lt;User*&gt; findUserByPredicat(<a class="code" href="database_8h.html#a29e03a4bb2cab6fe570c1973a96868cc">UserPredicat</a> predicat);</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; </div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">static</span> <a class="code" href="class_database.html">Database</a>* <a class="code" href="class_database.html#aa334760d1e18f82a344fb696547bfa5c">instance</a>();</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; QVector&lt;Profession&gt; <a class="code" href="class_database.html#ae0d70a742874a8ecde9c43a717bf4cff">professions</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; QVector&lt;User&gt; <a class="code" href="class_database.html#ac7d1c7104267353d36921edae9835332">users</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; </div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="class_database.html#ab2025a07d662e9179cee5caceeba56f1">addUser</a>(<a class="code" href="class_user.html">User</a> usr);</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="class_user.html">User</a>* <a class="code" href="class_database.html#a7b2e4640886bcc4c38b2476c818b1857">getUser</a>(<a class="code" href="user_8h.html#a5586b992db525c396811d83a811c389c">UID</a> uid);</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="class_user.html">User</a>* <a class="code" href="class_database.html#a7b2e4640886bcc4c38b2476c818b1857">getUser</a>(QString login);</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; QVector&lt;User*&gt; <a class="code" href="class_database.html#a9c12712f31b7c7d933810cd1efc5b419">getUsersByType</a>(<a class="code" href="user_8h.html#a196c5ae3c192f069339f2966656f6fe9">UserType</a> type);</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; QVector&lt;User*&gt; <a class="code" href="class_database.html#a209a0ab527d2ba7c11a8858234b9215c">getUsersByProfession</a>(<a class="code" href="profession_8h.html#a45fb035ea60a78189a1ba228bff1e467">PID</a> pid);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="class_database.html#abb8d4c217940d87947b8a218782cd3c2">removeUser</a>(<a class="code" href="user_8h.html#a5586b992db525c396811d83a811c389c">UID</a> uid);</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; </div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="class_database.html#a9e83b6320795afc05e261ca3f930d415">addProfession</a>(<a class="code" href="class_profession.html">Profession</a> prof);</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="class_profession.html">Profession</a>* <a class="code" href="class_database.html#abcf0eb4767a1471098d83303bad2e1d8">getProfession</a>(<a class="code" href="profession_8h.html#a45fb035ea60a78189a1ba228bff1e467">PID</a> pid);</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="class_database.html#aef0fd6ef16fbed5e26ace4abba5592e3">removeProfession</a>(<a class="code" href="profession_8h.html#a45fb035ea60a78189a1ba228bff1e467">PID</a> pid);</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; </div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_database.html#a3aae61eb0bc2fa65398f809cc5aa1065">save</a>();</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordtype">void</span> <a class="code" href="class_database.html#a0d09456daeb72a2a2fb432650e55025f">load</a>();</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;};</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; </div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// DATABASE_H</span></div>
<div class="ttc" id="aclass_database_html"><div class="ttname"><a href="class_database.html">Database</a></div><div class="ttdoc">Класс базы данных</div><div class="ttdef"><b>Definition:</b> database.h:22</div></div>
<div class="ttc" id="aclass_database_html_a0d09456daeb72a2a2fb432650e55025f"><div class="ttname"><a href="class_database.html#a0d09456daeb72a2a2fb432650e55025f">Database::load</a></div><div class="ttdeci">void load()</div><div class="ttdoc">Записывает данные системы на диск</div><div class="ttdef"><b>Definition:</b> database.cpp:108</div></div>
<div class="ttc" id="aclass_database_html_a209a0ab527d2ba7c11a8858234b9215c"><div class="ttname"><a href="class_database.html#a209a0ab527d2ba7c11a8858234b9215c">Database::getUsersByProfession</a></div><div class="ttdeci">QVector&lt; User * &gt; getUsersByProfession(PID pid)</div><div class="ttdoc">Возвращает список пользователей по принадлежности к профессии</div><div class="ttdef"><b>Definition:</b> database.cpp:55</div></div>
<div class="ttc" id="aclass_database_html_a3aae61eb0bc2fa65398f809cc5aa1065"><div class="ttname"><a href="class_database.html#a3aae61eb0bc2fa65398f809cc5aa1065">Database::save</a></div><div class="ttdeci">void save()</div><div class="ttdoc">Считывает данный с диска в систему</div><div class="ttdef"><b>Definition:</b> database.cpp:100</div></div>
<div class="ttc" id="aclass_database_html_a7b2e4640886bcc4c38b2476c818b1857"><div class="ttname"><a href="class_database.html#a7b2e4640886bcc4c38b2476c818b1857">Database::getUser</a></div><div class="ttdeci">User * getUser(UID uid)</div><div class="ttdoc">Возвращает пользователя по уникальному идентификатору</div><div class="ttdef"><b>Definition:</b> database.cpp:38</div></div>
<div class="ttc" id="aclass_database_html_a9c12712f31b7c7d933810cd1efc5b419"><div class="ttname"><a href="class_database.html#a9c12712f31b7c7d933810cd1efc5b419">Database::getUsersByType</a></div><div class="ttdeci">QVector&lt; User * &gt; getUsersByType(UserType type)</div><div class="ttdoc">Возвращает список пользователей по типу аккаунта</div><div class="ttdef"><b>Definition:</b> database.cpp:50</div></div>
<div class="ttc" id="aclass_database_html_a9e83b6320795afc05e261ca3f930d415"><div class="ttname"><a href="class_database.html#a9e83b6320795afc05e261ca3f930d415">Database::addProfession</a></div><div class="ttdeci">bool addProfession(Profession prof)</div><div class="ttdoc">Добавляет профессию в систему</div><div class="ttdef"><b>Definition:</b> database.cpp:71</div></div>
<div class="ttc" id="aclass_database_html_aa334760d1e18f82a344fb696547bfa5c"><div class="ttname"><a href="class_database.html#aa334760d1e18f82a344fb696547bfa5c">Database::instance</a></div><div class="ttdeci">static Database * instance()</div><div class="ttdoc">Возвращает статический объекта класса</div><div class="ttdef"><b>Definition:</b> database.cpp:6</div></div>
<div class="ttc" id="aclass_database_html_ab2025a07d662e9179cee5caceeba56f1"><div class="ttname"><a href="class_database.html#ab2025a07d662e9179cee5caceeba56f1">Database::addUser</a></div><div class="ttdeci">bool addUser(User usr)</div><div class="ttdoc">Добавляет пользователя в систему</div><div class="ttdef"><b>Definition:</b> database.cpp:18</div></div>
<div class="ttc" id="aclass_database_html_abb8d4c217940d87947b8a218782cd3c2"><div class="ttname"><a href="class_database.html#abb8d4c217940d87947b8a218782cd3c2">Database::removeUser</a></div><div class="ttdeci">bool removeUser(UID uid)</div><div class="ttdoc">Удалаяет пользователя из системы по уникальному идентификатору</div><div class="ttdef"><b>Definition:</b> database.cpp:60</div></div>
<div class="ttc" id="aclass_database_html_abcf0eb4767a1471098d83303bad2e1d8"><div class="ttname"><a href="class_database.html#abcf0eb4767a1471098d83303bad2e1d8">Database::getProfession</a></div><div class="ttdeci">Profession * getProfession(PID pid)</div><div class="ttdoc">Возвращает профессию по уникальному идентификатору</div><div class="ttdef"><b>Definition:</b> database.cpp:79</div></div>
<div class="ttc" id="aclass_database_html_ac7d1c7104267353d36921edae9835332"><div class="ttname"><a href="class_database.html#ac7d1c7104267353d36921edae9835332">Database::users</a></div><div class="ttdeci">QVector&lt; User &gt; users() const</div><div class="ttdoc">Возвращает список пользователй системы</div><div class="ttdef"><b>Definition:</b> database.cpp:14</div></div>
<div class="ttc" id="aclass_database_html_ae0d70a742874a8ecde9c43a717bf4cff"><div class="ttname"><a href="class_database.html#ae0d70a742874a8ecde9c43a717bf4cff">Database::professions</a></div><div class="ttdeci">QVector&lt; Profession &gt; professions() const</div><div class="ttdoc">Возвращает список профессий системы</div><div class="ttdef"><b>Definition:</b> database.cpp:10</div></div>
<div class="ttc" id="aclass_database_html_aef0fd6ef16fbed5e26ace4abba5592e3"><div class="ttname"><a href="class_database.html#aef0fd6ef16fbed5e26ace4abba5592e3">Database::removeProfession</a></div><div class="ttdeci">bool removeProfession(PID pid)</div><div class="ttdoc">Удаляет профессию из системы по уникальному идентификатору</div><div class="ttdef"><b>Definition:</b> database.cpp:85</div></div>
<div class="ttc" id="aclass_profession_html"><div class="ttname"><a href="class_profession.html">Profession</a></div><div class="ttdoc">Класс сущности профессии</div><div class="ttdef"><b>Definition:</b> profession.h:14</div></div>
<div class="ttc" id="aclass_user_html"><div class="ttname"><a href="class_user.html">User</a></div><div class="ttdoc">Класс сущности пользователя</div><div class="ttdef"><b>Definition:</b> user.h:26</div></div>
<div class="ttc" id="adatabase_8h_html_a29e03a4bb2cab6fe570c1973a96868cc"><div class="ttname"><a href="database_8h.html#a29e03a4bb2cab6fe570c1973a96868cc">UserPredicat</a></div><div class="ttdeci">std::function&lt; bool(User)&gt; UserPredicat</div><div class="ttdef"><b>Definition:</b> database.h:15</div></div>
<div class="ttc" id="aprofession_8h_html_a45fb035ea60a78189a1ba228bff1e467"><div class="ttname"><a href="profession_8h.html#a45fb035ea60a78189a1ba228bff1e467">PID</a></div><div class="ttdeci">QUuid PID</div><div class="ttdef"><b>Definition:</b> profession.h:8</div></div>
<div class="ttc" id="auser_8h_html_a196c5ae3c192f069339f2966656f6fe9"><div class="ttname"><a href="user_8h.html#a196c5ae3c192f069339f2966656f6fe9">UserType</a></div><div class="ttdeci">UserType</div><div class="ttdoc">Набор возможных типов аккаунта пользователя</div><div class="ttdef"><b>Definition:</b> user.h:16</div></div>
<div class="ttc" id="auser_8h_html_a5586b992db525c396811d83a811c389c"><div class="ttname"><a href="user_8h.html#a5586b992db525c396811d83a811c389c">UID</a></div><div class="ttdeci">QUuid UID</div><div class="ttdef"><b>Definition:</b> user.h:12</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.0
</small></address>
</body>
</html>