From fda174ea5b3e76c1120f30eb82f401265b69e9cf Mon Sep 17 00:00:00 2001 From: IdkWhatToWriteHereOhManItWasAlreadyUsed Date: Fri, 13 Feb 2026 22:50:55 +0300 Subject: [PATCH 01/18] initial commit --- 351004/Lazuta/.gitignore | 658 ++++++++++++++++++++++++++++++++ 351004/Lazuta/CMakeLists.txt | 23 ++ 351004/Lazuta/CMakePresets.json | 88 +++++ 351004/Lazuta/src/main.cpp | 6 + 4 files changed, 775 insertions(+) create mode 100644 351004/Lazuta/.gitignore create mode 100644 351004/Lazuta/CMakeLists.txt create mode 100644 351004/Lazuta/CMakePresets.json create mode 100644 351004/Lazuta/src/main.cpp diff --git a/351004/Lazuta/.gitignore b/351004/Lazuta/.gitignore new file mode 100644 index 000000000..d8e18a7a5 --- /dev/null +++ b/351004/Lazuta/.gitignore @@ -0,0 +1,658 @@ +# Программные артефакты +*.exe +*.exe~ +*.dll +*.so +*.dylib +*.lib +*.a +*.pdb +*.ilk +*.exp +*.dSYM/ +*.out +*.app + +# Сборка и компиляция +*.o +*.obj +*.gcda +*.gcno +*.gcov +*.ilk +*.map +*.temp +*.tmp +*.idb +*.pdb +*.ipdb +*.iobj + +# CMake +CMakeCache.txt +CMakeFiles/ +CMakeScripts/ +cmake_install.cmake +CMakeUserPresets.json +CTestTestfile.cmake +install_manifest.txt +**/CMakeLists.txt.user +**/CMakeCache.txt +**/*.cmake +!CMakeLists.txt +!**/CMakeLists.txt +!cmake/ +compile_commands.json +*.cmake.in +_build/ +build/ +build-*/ +out/ +cmake-build-*/ + +# Папки сборки (общие названия) +/build*/ +/build-*/ +/*build/ +/*build-*/ +/build/ +/Debug/ +/Release/ +/x64/ +/x86/ +/win32/ +/linux/ + +# IDE и редакторы +# VS Code +.vscode/ +*.code-workspace +*.vscode +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Visual Studio +.vs/ +*.sln +*.vcxproj +*.vcxproj.filters +*.vcxproj.user +*.vcxproj.user.* +*.vcproj +*.vcproj.user +*.vcproj.user.* +*.ncb +*.suo +*.sdf +*.opendb +*.opensdf +*.VC.db +*.VC.VC.opendb +*.vcxitems +*.vcxitems.filters +*.vcxproj.tmp +*.vcxproj.timestamp +Debug/ +Release/ +x64/ +x86/ +Win32/ +*.tlog +*.log +*.manifest +*.aps + +# CLion +.idea/ +.cxx/ +.cache/ +.clion-*/ +cmake-build-*/ +*.iml +*.iws +*.ipr +out/ + +# Qt Creator +*.creator +*.creator.user +*.creator.user.* +*.config +*.includes +*.files +*.cxxflags +*.cflags +*.qmlproject +*.qmlproject.user +*.qmlproject.user.* +*.qmlproject.launch +*.pro +*.pro.user +*.pro.user.* +*.pri +*.pri.user +*.pri.user.* +*.prl +*.prl.user +*.prl.user.* +*.depend +*.pch +*-build-* +*-build-desktop/ +shadow-build/ +*-build/ + +# KDevelop +*.kdev4 +.kdev4/ + +# CodeBlocks +*.cbp +*.cbp~ +*.layout +*.depend +*.depend.* +*.workspace +*.workspace.* +*.layout +*.layout.* + +# Eclipse +.cproject +.project +.settings/ +.classpath +.factorypath +.metadata/ +*.sc +codan/ +.cb_* + +# NetBeans +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +nbactions.xml +nb-configuration.xml + +# Sublime Text +*.sublime-project +*.sublime-workspace +*.sublime-* +*.sublime-gradle +.sublime/ + +# Vim +*.swp +*.swo +*~ +.*.sw? +.*.un~ +Session.vim +.netrwhist +tags +.vim/ + +# Emacs +*~ +\#*\# +/.emacs.desktop +/.emacs.desktop.lock +*.elc +auto-save-list +tramp +.\#* + +# Xcode +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata/ +*.xccheckout +*.xcscmblueprint +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +/*.gcno +**/xcshareddata/WorkspaceSettings.xcsettings + +# Тестирование и покрытие +*.test +*.test.exe +*.test.out +test-*.log +Test.xml +*.trs +*.lastbuildstate +test-suite.log +/test-driver +test-results/ +test-reports/ +coverage/ +*.gcov +*.gcda +*.gcno +*.profraw +*.profdata +*.prof +*.info +*.lcov +lcov-html/ +htmlcov/ +cov-int/ +*.cov +*.crc +*.trace +*.trace.* +*.tst +*.tst.* +*.memcheck +*.valgrind +*.out +*.out.* +*.log +*.log.* + +# Документация +docs/html/ +docs/latex/ +docs/xml/ +docs/_build/ +doxygen_sqlite3.db +*.aux +*.dvi +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.bbl +*.bcf +*.blg +*-blx.bib +*.run.xml +*.fdb_latexmk +*.synctex.gz +*.pdf +*.epub +*.mobi +*.chm +docset/ +*.docset +*.docset.gz +*.docset.tar.gz + +# Упаковка и дистрибутивы +*.tar +*.tar.gz +*.tgz +*.tar.bz2 +*.tar.xz +*.zip +*.7z +*.rar +*.deb +*.rpm +*.dmg +*.pkg +*.msi +*.exe.manifest +*.dll.manifest +*.appx +*.appinstaller +*.msix +*.msixbundle + +# Системные файлы +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db +*.bak +*.old +*.orig +*.patch +*.diff +*.swp +*.swo +*~ +~$* +$*.doc +*.tmp +*.temp +*.cache +*.lock +desktop.ini +Thumbs.db:encryptable +*.lnk +*.url +*.part +*.crdownload +*.download + +# Логи и временные файлы +*.log +*.tlog +*.etl +*.etl.xml +*.etl.csv +*.etl.json +*.etl.kernel +*.etl.user +*.etl.kernel.csv +*.etl.user.csv +*.etl.kernel.json +*.etl.user.json +*.etl.kernel.xml +*.etl.user.xml +logs/ +*.pid +*.seed +*.pid.lock + +# Настройки приложений +*.ini +*.cfg +*.conf +*.config +!CMakeLists.txt +!**.cmake +!/cmake/ +*.user +*.user.ini +*.user.*.ini +*.ini.old +*.cfg.old +*.conf.old +*.config.old + +# Python (если используете для скриптов) +*.pyc +*.pyo +*.pyd +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +env/ +venv/ +.env/ +.venv/ +ENV/ +env.bak/ +venv.bak/ +pythonenv* + +# Java (если есть) +*.class +*.jar +*.war +*.ear +*.nar +*.par +*.zip +*.tar.gz +*.tgz +*.log +*.log.* +hs_err_pid* +*.iml +.idea/ +.gradle/ +build/ +target/ +*.ipr +*.iws +*.classpath +*.project +.settings/ +.metadata/ +.classpath +.project +*.gradle +!gradle-wrapper.jar +.gradle/ +build/ +*/build/ +out/ +classes/ +*.log +*.log.* + +# Node.js (если есть) +node_modules/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* +lerna-debug.log* +.pnpm-store/ +.npm/ +.yarn-integrity +.env +.env.local +.env.*.local + +# Docker +.dockerignore +Dockerfile* +docker-compose* +*.docker +docker-build.log +docker-compose.override.yml +.docker/ +.docker/config.json + +# Conan +conanbuildinfo.* +conaninfo.txt +conanbuild.* +conanenv.* +conan_imports_* +conan_package_* +conan_* +.gradle/ +local_* +test_package/build/ +test_package/CMakeUserPresets.json +CMakeUserPresets.json +*_conan +*_conan_package +*_conan_build +conanfile.pyc +conanfile.pyo +conan_imports/ +conan_cache/ +.conan/ +.conan_sources/ +conanbuild.* +conanenv.* +conaninfo.txt +graph_info.json +conanfile.lock +conan.lock +conan_* +!conanfile.py + +# vcpkg +vcpkg/ +vcpkg_installed/ +vcpkg-manifest-install.log +*.vcpkg +*.vcpkg-root +vcpkg.path.txt +buildtrees/ +packages/ +installed/ +downloads/ +scripts/ +ports/ +triplets/ +*.vcpkg-response +*.vcpkg-response.txt +vcpkg.spdx.json +vcpkg-*.json + +# Hunter +_Hunter/ +_3rdParty/ +hunter/ +HunterGate.cmake +*.hunter +*.hunter.cmake +*.hunter.config +*.hunter.id +*.hunter.sha1 +*.hunter.tar.gz +*.hunter.zip + +# CPM.cmake +CPM.cmake +.cpm/ +cpm-packages/ +cpm-cache/ +*.cpm +*.cpm.cmake + +# Санитайзеры +*.asan +*.tsan +*.ubsan +*.lsan +*.msan +*.asan.log +*.tsan.log +*.ubsan.log +*.lsan.log +*.msan.log +asan.log.* +tsan.log.* +ubsan.log.* +lsan.log.* +msan.log.* + +# Профилирование +*.prof +*.profraw +*.profdata +*.gcda +*.gcno +*.gcov +*.info +*.trace +*.trace.* +callgrind.out.* +cachegrind.out.* +massif.out.* +perf.data* +perf.stat* +flamegraph.svg +profile/ +profiling/ +*.vgdb +*.vgs +*.vge +*.vgd +*.vgg +*.vgo +*.vgs +*.vge +*.vgm +*.vgcore + +# Временные и резервные копии +*.bak +*.backup +*.old +*.orig +*.tmp +*.temp +*.swp +*.swo +*~ +*.~lock.* +*.part +*.crdownload +*.download +*.partial +*.incomplete +*.lock +*.lck +*.pid +*.pid.lock +*.socket +*.sock + +# Мокапы и тестовые данные +test/data/ +test/fixtures/ +test/mocks/ +test/mock_*.h +mock_*.cpp +mock_*.h +*_mock.cpp +*_mock.h +*_mocks.cpp +*_mocks.h +*_stub.cpp +*_stub.h +*_fake.cpp +*_fake.h +test_*.log +mock_*.log +*.mock +*.stub +*.fake +*.faker + +# Дополнительно для вашего REST API +# Логи запросов/ответов +api_logs/ +requests.log +responses.log +*.requests +*.responses +api_trace.log +access.log +error.log +drogon.log + +# Временные файлы Drogon +drogon_ctl +*.drogon +.drogon/ +.drogon_* +drogon_model_* +drogon_ctl_* + +# SSL сертификаты (если будете использовать) +*.crt +*.pem +*.key +*.csr +*.srl +*.der +*.pfx +*.p12 +*.jks +*.keystore +*.truststore +cert/ +certs/ +ssl/ \ No newline at end of file diff --git a/351004/Lazuta/CMakeLists.txt b/351004/Lazuta/CMakeLists.txt new file mode 100644 index 000000000..d6db5d4c4 --- /dev/null +++ b/351004/Lazuta/CMakeLists.txt @@ -0,0 +1,23 @@ +cmake_minimum_required(VERSION 3.10) +project(task310) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +file(GLOB_RECURSE SOURCE_FILES + "src/*.cpp" +) + +find_package(Drogon REQUIRED) + +add_executable(${PROJECT_NAME} + ${SOURCE_FILES} +) + + +target_include_directories(${PROJECT_NAME} PRIVATE + "${CMAKE_CURRENT_SOURCE_DIR}/src" +) + +target_link_libraries(${PROJECT_NAME} Drogon::Drogon) \ No newline at end of file diff --git a/351004/Lazuta/CMakePresets.json b/351004/Lazuta/CMakePresets.json new file mode 100644 index 000000000..745995b56 --- /dev/null +++ b/351004/Lazuta/CMakePresets.json @@ -0,0 +1,88 @@ +{ + "version": 8, + "configurePresets": [ + { + "name": "debug", + "displayName": "Debug", + "description": "Debug конфигурация с отладочными символами", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/out/build/debug", + "cacheVariables": { + "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/debug", + "CMAKE_C_COMPILER": "/usr/bin/gcc", + "CMAKE_CXX_COMPILER": "/usr/bin/g++", + "CMAKE_BUILD_TYPE": "Debug", + "CMAKE_VERBOSE_MAKEFILE": "ON" + } + }, + { + "name": "release", + "displayName": "Release", + "description": "Release конфигурация с оптимизациями", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/out/build/release", + "cacheVariables": { + "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/release", + "CMAKE_C_COMPILER": "/usr/bin/gcc", + "CMAKE_CXX_COMPILER": "/usr/bin/g++", + "CMAKE_BUILD_TYPE": "Release", + "CMAKE_VERBOSE_MAKEFILE": "OFF" + } + }, + { + "name": "relwithdebinfo", + "displayName": "RelWithDebInfo", + "description": "Release с отладочной информацией", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/out/build/relwithdebinfo", + "cacheVariables": { + "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/relwithdebinfo", + "CMAKE_C_COMPILER": "/usr/bin/gcc", + "CMAKE_CXX_COMPILER": "/usr/bin/g++", + "CMAKE_BUILD_TYPE": "RelWithDebInfo" + } + }, + { + "name": "minsizerel", + "displayName": "MinSizeRel", + "description": "Release с оптимизацией на размер", + "generator": "Unix Makefiles", + "binaryDir": "${sourceDir}/out/build/minsizerel", + "cacheVariables": { + "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/minsizerel", + "CMAKE_C_COMPILER": "/usr/bin/gcc", + "CMAKE_CXX_COMPILER": "/usr/bin/g++", + "CMAKE_BUILD_TYPE": "MinSizeRel" + } + } + ], + "buildPresets": [ + { + "name": "debug-build", + "configurePreset": "debug", + "displayName": "Build Debug", + "description": "Сборка Debug версии" + }, + { + "name": "release-build", + "configurePreset": "release", + "displayName": "Build Release", + "description": "Сборка Release версии" + } + ], + "testPresets": [ + { + "name": "debug-test", + "configurePreset": "debug", + "displayName": "Test Debug", + "description": "Запуск тестов для Debug сборки", + "output": {"outputOnFailure": true} + }, + { + "name": "release-test", + "configurePreset": "release", + "displayName": "Test Release", + "description": "Запуск тестов для Release сборки" + } + ] +} \ No newline at end of file diff --git a/351004/Lazuta/src/main.cpp b/351004/Lazuta/src/main.cpp new file mode 100644 index 000000000..fe44bf9e5 --- /dev/null +++ b/351004/Lazuta/src/main.cpp @@ -0,0 +1,6 @@ +#include + +int main() +{ + return 0; +} \ No newline at end of file From 21e213f301527fb9f5488db4c1a01e36ee0c428b Mon Sep 17 00:00:00 2001 From: IdkWhatToWriteHereOhManItWasAlreadyUsed Date: Sun, 15 Feb 2026 14:06:09 +0300 Subject: [PATCH 02/18] =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BB=20=D1=81=D1=83=D1=89=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B8,=20=D0=94=D0=90=D0=9E=20=D0=B8=20=D1=85=D1=80?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=BB=D0=B8=D1=89=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 351004/Lazuta/config.json | 16 + 351004/Lazuta/http/index.html | 1 + 351004/Lazuta/src/controllers/TestCtrl.cpp | 10 + 351004/Lazuta/src/controllers/TestCtrl.h | 16 + 351004/Lazuta/src/dao/DAO.h | 23 + 351004/Lazuta/src/dao/EditorDAO.h | 13 + 351004/Lazuta/src/dao/IssueDAO.h | 30 + 351004/Lazuta/src/dao/LabelDAO.h | 13 + 351004/Lazuta/src/dao/PostDAO.h | 13 + 351004/Lazuta/src/entities/Editor.cpp | 64 + 351004/Lazuta/src/entities/Editor.h | 30 + 351004/Lazuta/src/entities/Entity.cpp | 19 + 351004/Lazuta/src/entities/Entity.h | 17 + 351004/Lazuta/src/entities/Issue.cpp | 76 + 351004/Lazuta/src/entities/Issue.h | 34 + 351004/Lazuta/src/entities/Label.cpp | 26 + 351004/Lazuta/src/entities/Label.h | 20 + 351004/Lazuta/src/entities/Post.cpp | 76 + 351004/Lazuta/src/entities/Post.h | 34 + 351004/Lazuta/src/libs/robin_hood.h | 2544 +++++++++++++++++ 351004/Lazuta/src/main.cpp | 7 +- 351004/Lazuta/src/storage/BaseMemoryStorage.h | 86 + 351004/Lazuta/urls.txt | 0 23 files changed, 3166 insertions(+), 2 deletions(-) create mode 100644 351004/Lazuta/config.json create mode 100644 351004/Lazuta/http/index.html create mode 100644 351004/Lazuta/src/controllers/TestCtrl.cpp create mode 100644 351004/Lazuta/src/controllers/TestCtrl.h create mode 100644 351004/Lazuta/src/dao/DAO.h create mode 100644 351004/Lazuta/src/dao/EditorDAO.h create mode 100644 351004/Lazuta/src/dao/IssueDAO.h create mode 100644 351004/Lazuta/src/dao/LabelDAO.h create mode 100644 351004/Lazuta/src/dao/PostDAO.h create mode 100644 351004/Lazuta/src/entities/Editor.cpp create mode 100644 351004/Lazuta/src/entities/Editor.h create mode 100644 351004/Lazuta/src/entities/Entity.cpp create mode 100644 351004/Lazuta/src/entities/Entity.h create mode 100644 351004/Lazuta/src/entities/Issue.cpp create mode 100644 351004/Lazuta/src/entities/Issue.h create mode 100644 351004/Lazuta/src/entities/Label.cpp create mode 100644 351004/Lazuta/src/entities/Label.h create mode 100644 351004/Lazuta/src/entities/Post.cpp create mode 100644 351004/Lazuta/src/entities/Post.h create mode 100644 351004/Lazuta/src/libs/robin_hood.h create mode 100644 351004/Lazuta/src/storage/BaseMemoryStorage.h create mode 100644 351004/Lazuta/urls.txt diff --git a/351004/Lazuta/config.json b/351004/Lazuta/config.json new file mode 100644 index 000000000..741430e0e --- /dev/null +++ b/351004/Lazuta/config.json @@ -0,0 +1,16 @@ +{ + "listeners": [ + { + "address": "0.0.0.0", + "port": 24110, + "https": false + } + ], + "app": + { + "threads_num": 1, + "document_root": "/home/dmitry/Distcomp/351004/Lazuta/http", + "implicit_page": "index.html" + } + +} \ No newline at end of file diff --git a/351004/Lazuta/http/index.html b/351004/Lazuta/http/index.html new file mode 100644 index 000000000..dc4bb7788 --- /dev/null +++ b/351004/Lazuta/http/index.html @@ -0,0 +1 @@ +

Hello Drogon!

\ No newline at end of file diff --git a/351004/Lazuta/src/controllers/TestCtrl.cpp b/351004/Lazuta/src/controllers/TestCtrl.cpp new file mode 100644 index 000000000..425789af4 --- /dev/null +++ b/351004/Lazuta/src/controllers/TestCtrl.cpp @@ -0,0 +1,10 @@ +#include "TestCtrl.h" + +void TestCtrl::asyncHandleHttpRequest(const HttpRequestPtr &req, std::function &&callback) +{ + auto resp = HttpResponse::newHttpResponse(); + resp->setStatusCode(k200OK); + resp->setContentTypeCode(CT_TEXT_HTML); + resp->setBody("Hello World!"); + callback(resp); +} \ No newline at end of file diff --git a/351004/Lazuta/src/controllers/TestCtrl.h b/351004/Lazuta/src/controllers/TestCtrl.h new file mode 100644 index 000000000..daf361fbb --- /dev/null +++ b/351004/Lazuta/src/controllers/TestCtrl.h @@ -0,0 +1,16 @@ +#pragma once + +#include + +using namespace drogon; + +class TestCtrl: public drogon::HttpSimpleController +{ +public: + virtual void asyncHandleHttpRequest(const HttpRequestPtr &req, std::function &&callback) override; + + PATH_LIST_BEGIN + PATH_ADD("/",Get,Post); + PATH_ADD("/test",Get); + PATH_LIST_END +}; \ No newline at end of file diff --git a/351004/Lazuta/src/dao/DAO.h b/351004/Lazuta/src/dao/DAO.h new file mode 100644 index 000000000..cfe102aab --- /dev/null +++ b/351004/Lazuta/src/dao/DAO.h @@ -0,0 +1,23 @@ +// dao/DAO.h +#pragma once + +#include +#include +#include +#include + +template +class DAO +{ +public: + virtual ~DAO() = default; + + virtual K Create(const T& entity) = 0; + virtual std::optional Read(K id) = 0; + virtual bool Update(K id, const T& entity) = 0; + virtual bool Delete(K id) = 0; + virtual std::vector ReadAll() = 0; + + virtual std::vector FindBy(std::function predicate) = 0; + virtual bool Exists(K id) = 0; +}; \ No newline at end of file diff --git a/351004/Lazuta/src/dao/EditorDAO.h b/351004/Lazuta/src/dao/EditorDAO.h new file mode 100644 index 000000000..86bfb2f1a --- /dev/null +++ b/351004/Lazuta/src/dao/EditorDAO.h @@ -0,0 +1,13 @@ +#pragma once + +#include "DAO.h" +#include + +class EditorDAO : public DAO +{ +public: + virtual ~EditorDAO() = default; + + virtual std::optional FindByLogin(const std::string& login) = 0; + virtual bool ExistsByLogin(const std::string& login) = 0; +}; \ No newline at end of file diff --git a/351004/Lazuta/src/dao/IssueDAO.h b/351004/Lazuta/src/dao/IssueDAO.h new file mode 100644 index 000000000..98069900d --- /dev/null +++ b/351004/Lazuta/src/dao/IssueDAO.h @@ -0,0 +1,30 @@ +#pragma once + +#include "DAO.h" +#include +#include +#include + +class IssueDAO : public DAO +{ +public: + virtual ~IssueDAO() = default; + + virtual std::vector FindByEditorId(uint64_t editorId) = 0; + + virtual std::vector FindByLabelId(uint64_t labelId) = 0; + virtual void AddLabelToIssue(uint64_t issueId, uint64_t labelId) = 0; + virtual void RemoveLabelFromIssue(uint64_t issueId, uint64_t labelId) = 0; + virtual std::vector GetLabelIdsForIssue(uint64_t issueId) = 0; + + virtual std::vector FindByPostId(uint64_t postId) = 0; + + virtual std::vector FindByCriteria + ( + std::optional title, + std::optional content, + std::optional editorLogin, + std::optional> labelIds, + std::optional> labelNames + ) = 0; +}; \ No newline at end of file diff --git a/351004/Lazuta/src/dao/LabelDAO.h b/351004/Lazuta/src/dao/LabelDAO.h new file mode 100644 index 000000000..7a45b4e82 --- /dev/null +++ b/351004/Lazuta/src/dao/LabelDAO.h @@ -0,0 +1,13 @@ +#pragma once + +#include "DAO.h" +#include + +class LabelDAO : public DAO