Browse Source

WIP: cpp17

cpp17-init-dingo-fail
chodak166 5 months ago
parent
commit
3a63b9dfcf
  1. 7
      cpp17/lib/CMakeLists.txt
  2. 6
      cpp17/lib/include/autostore/AutoStore.h
  3. 18
      cpp17/lib/include/autostore/domain/entities/User.h
  4. 6
      cpp17/lib/src/AutoStore.cpp
  5. 15
      cpp17/lib/src/application/commands/AddItem.cpp
  6. 25
      cpp17/lib/src/application/commands/AddItem.h
  7. 8
      cpp17/lib/src/application/interfaces/IAuthService.h
  8. 8
      cpp17/lib/src/application/interfaces/IItemRepository.h
  9. 8
      cpp17/lib/src/application/interfaces/IUserRepository.h
  10. 34
      cpp17/lib/src/application/presenters/GenericPresenters.h
  11. 14
      cpp17/lib/src/domain/entities/Item.h
  12. 15
      cpp17/lib/src/domain/entities/User.h
  13. 8
      cpp17/lib/src/infrastructure/repositories/FileItemRepository.cpp
  14. 8
      cpp17/lib/src/infrastructure/repositories/FileItemRepository.h
  15. 8
      cpp17/lib/src/infrastructure/repositories/FileUserRepository.cpp
  16. 8
      cpp17/lib/src/infrastructure/repositories/FileUserRepository.h
  17. 1
      cpp17/tests/CMakeLists.txt
  18. 4
      cpp17/tests/integration/FileItemRepository.test.cpp
  19. 4
      cpp17/tests/integration/FileUserRepository.test.cpp

7
cpp17/lib/CMakeLists.txt

@ -15,6 +15,8 @@ add_library(${TARGET_NAME} STATIC
target_include_directories(${TARGET_NAME}
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/include/autostore
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
)
target_sources(${TARGET_NAME}
@ -23,11 +25,6 @@ target_sources(${TARGET_NAME}
BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include
FILES
include/autostore/AutoStore.h
include/autostore/domain/entities/User.h
include/autostore/domain/entities/Item.h
include/autostore/application/interfaces/IUserRepository.h
include/autostore/application/interfaces/IItemRepository.h
include/autostore/application/interfaces/IAuthService.h
)
# Find dependencies

6
cpp17/lib/include/autostore/AutoStore.h

@ -4,8 +4,7 @@
#include <string>
#include <string_view>
namespace nxl {
namespace autostore {
namespace nxl::autostore {
class AutoStore
{
@ -27,5 +26,4 @@ private:
bool initialized;
};
} // namespace autostore
} // namespace nxl
} // namespace nxl::autostore

18
cpp17/lib/include/autostore/domain/entities/User.h

@ -1,18 +0,0 @@
#pragma once
#include <string>
namespace nxl {
namespace autostore {
namespace domain {
struct User
{
std::string id;
std::string username;
std::string passwordHash;
};
} // namespace domain
} // namespace autostore
} // namespace nxl

6
cpp17/lib/src/AutoStore.cpp

@ -1,8 +1,7 @@
#include "autostore/AutoStore.h"
#include <iostream>
namespace nxl {
namespace autostore {
namespace nxl::autostore {
AutoStore::AutoStore(std::string_view dataPath)
: dataPath(dataPath), initialized(false)
@ -39,5 +38,4 @@ void AutoStore::stop()
std::cout << "Stopping AutoStore services..." << std::endl;
}
} // namespace autostore
} // namespace nxl
} // namespace nxl::autostore

15
cpp17/lib/src/application/commands/AddItem.cpp

@ -0,0 +1,15 @@
#include "AddItem.h"
#include "domain/polices/ItemExpirationPolicy.h"
namespace nxl::autostore::application {
AddItem::AddItem(IItemRepository& itemRepository)
: itemRepository(itemRepository)
{}
void AddItem::execute(domain::Item&& item, const IntPresenter& presenter)
{
// TODO
}
} // namespace nxl::autostore::application

25
cpp17/lib/src/application/commands/AddItem.h

@ -0,0 +1,25 @@
#pragma once
#include "domain/entities/Item.h"
#include "application/interfaces/IItemRepository.h"
#include "application/presenters/GenericPresenters.h"
namespace nxl {
namespace autostore {
namespace application {
class AddItem
{
public:
virtual ~AddItem() = default;
AddItem(IItemRepository& itemRepository);
void execute(domain::Item&& item, const IntPresenter& presenter);
private:
IItemRepository& itemRepository;
};
} // namespace application
} // namespace autostore
} // namespace nxl

8
cpp17/lib/include/autostore/application/interfaces/IAuthService.h → cpp17/lib/src/application/interfaces/IAuthService.h

@ -4,9 +4,7 @@
#include <string_view>
#include <optional>
namespace nxl {
namespace autostore {
namespace application {
namespace nxl::autostore::application {
class IAuthService
{
@ -16,6 +14,4 @@ public:
virtual std::optional<std::string> validateToken(std::string_view token) = 0;
};
} // namespace application
} // namespace autostore
} // namespace nxl
} // namespace nxl::autostore::application

8
cpp17/lib/include/autostore/application/interfaces/IItemRepository.h → cpp17/lib/src/application/interfaces/IItemRepository.h

@ -6,9 +6,7 @@
#include <string_view>
#include <vector>
namespace nxl {
namespace autostore {
namespace application {
namespace nxl::autostore::application {
class IItemRepository
{
@ -21,6 +19,4 @@ public:
virtual void remove(std::string_view id) = 0;
};
} // namespace application
} // namespace autostore
} // namespace nxl
} // namespace nxl::autostore::application

8
cpp17/lib/include/autostore/application/interfaces/IUserRepository.h → cpp17/lib/src/application/interfaces/IUserRepository.h

@ -6,9 +6,7 @@
#include <string_view>
#include <vector>
namespace nxl {
namespace autostore {
namespace application {
namespace nxl::autostore::application {
class IUserRepository
{
@ -22,6 +20,4 @@ public:
virtual void remove(std::string_view id) = 0;
};
} // namespace application
} // namespace autostore
} // namespace nxl
} // namespace nxl::autostore::application

34
cpp17/lib/src/application/presenters/GenericPresenters.h

@ -0,0 +1,34 @@
#pragma once
#include <functional>
#include <string>
namespace nxl::autostore::application {
struct OpResult
{
bool success;
std::string message;
bool operator==(const OpResult& other) const
{
return success == other.success && message == other.message;
}
};
struct ErrorResult : public OpResult
{
ErrorResult(std::string message) : OpResult({false, message}) {}
};
struct SuccessResult : public OpResult
{
SuccessResult(std::string message) : OpResult({true, message}) {}
};
using BoolPresenter = std::function<void(bool)>;
using IntPresenter = std::function<void(int)>;
using DoublePresenter = std::function<void(double)>;
using StringPresenter = std::function<void(std::string)>;
} // namespace nxl::autostore::application

14
cpp17/lib/include/autostore/domain/entities/Item.h → cpp17/lib/src/domain/entities/Item.h

@ -1,21 +1,19 @@
#pragma once
#include "User.h"
#include <string>
#include <chrono>
namespace nxl {
namespace autostore {
namespace domain {
namespace nxl::autostore::domain {
struct Item
{
std::string id;
using Id_t = std::string;
Id_t id;
std::string name;
std::chrono::system_clock::time_point expirationDate;
std::string orderUrl;
std::string userId;
User::Id_t userId;
};
} // namespace domain
} // namespace autostore
} // namespace nxl
} // namespace nxl::autostore::domain

15
cpp17/lib/src/domain/entities/User.h

@ -0,0 +1,15 @@
#pragma once
#include <string>
namespace nxl::autostore::domain {
struct User
{
using Id_t = std::string;
Id_t id;
std::string username;
std::string passwordHash;
};
} // namespace nxl::autostore::domain

8
cpp17/lib/src/infrastructure/repositories/FileItemRepository.cpp

@ -6,9 +6,7 @@
#include <ctime>
#include <iterator>
namespace nxl {
namespace autostore {
namespace infrastructure {
namespace nxl::autostore::infrastructure {
namespace {
@ -137,6 +135,4 @@ void FileItemRepository::persist()
}
}
} // namespace infrastructure
} // namespace autostore
} // namespace nxl
} // namespace nxl::autostore::infrastructure

8
cpp17/lib/include/autostore/infrastructure/repositories/FileItemRepository.h → cpp17/lib/src/infrastructure/repositories/FileItemRepository.h

@ -5,9 +5,7 @@
#include <vector>
#include <mutex>
namespace nxl {
namespace autostore {
namespace infrastructure {
namespace nxl::autostore::infrastructure {
class FileItemRepository : public application::IItemRepository
{
@ -28,6 +26,4 @@ private:
std::mutex mtx;
};
} // namespace infrastructure
} // namespace autostore
} // namespace nxl
} // namespace nxl::autostore::infrastructure

8
cpp17/lib/src/infrastructure/repositories/FileUserRepository.cpp

@ -3,9 +3,7 @@
#include <fstream>
#include <algorithm>
namespace nxl {
namespace autostore {
namespace infrastructure {
namespace nxl::autostore::infrastructure {
namespace {
@ -129,6 +127,4 @@ void FileUserRepository::persist()
}
}
} // namespace infrastructure
} // namespace autostore
} // namespace nxl
} // namespace nxl::autostore::infrastructure

8
cpp17/lib/include/autostore/infrastructure/repositories/FileUserRepository.h → cpp17/lib/src/infrastructure/repositories/FileUserRepository.h

@ -5,9 +5,7 @@
#include <vector>
#include <mutex>
namespace nxl {
namespace autostore {
namespace infrastructure {
namespace nxl::autostore::infrastructure {
class FileUserRepository : public application::IUserRepository
{
@ -29,6 +27,4 @@ private:
std::mutex mtx;
};
} // namespace infrastructure
} // namespace autostore
} // namespace nxl
} // namespace nxl::autostore::infrastructure

1
cpp17/tests/CMakeLists.txt

@ -19,6 +19,7 @@ function(add_integration_test TEST_NAME SOURCE_FILE)
target_include_directories(${TEST_NAME}
PRIVATE
${PROJECT_SOURCE_DIR}/lib/include
${PROJECT_SOURCE_DIR}/lib/src
)
# Add test to CTest

4
cpp17/tests/integration/FileItemRepository.test.cpp

@ -1,7 +1,7 @@
#include "infrastructure/repositories/FileItemRepository.h"
#include "domain/entities/Item.h"
#include <catch2/catch_test_macros.hpp>
#include <catch2/matchers/catch_matchers_string.hpp>
#include <autostore/infrastructure/repositories/FileItemRepository.h>
#include <autostore/domain/entities/Item.h>
#include <filesystem>
#include <fstream>
#include <optional>

4
cpp17/tests/integration/FileUserRepository.test.cpp

@ -1,7 +1,7 @@
#include "infrastructure/repositories/FileUserRepository.h"
#include "domain/entities/User.h"
#include <catch2/catch_test_macros.hpp>
#include <catch2/matchers/catch_matchers_string.hpp>
#include <autostore/infrastructure/repositories/FileUserRepository.h>
#include <autostore/domain/entities/User.h>
#include <filesystem>
#include <fstream>
#include <optional>

Loading…
Cancel
Save