diff --git a/Application/Application.vcxproj b/Application/Application.vcxproj
index 7d10056..6cfd673 100644
--- a/Application/Application.vcxproj
+++ b/Application/Application.vcxproj
@@ -237,6 +237,7 @@
+
diff --git a/Application/Application.vcxproj.filters b/Application/Application.vcxproj.filters
index d36a5c1..ce2c06c 100644
--- a/Application/Application.vcxproj.filters
+++ b/Application/Application.vcxproj.filters
@@ -144,6 +144,9 @@
Header Files\Model
+
+ Header Files\Common\ORM
+
diff --git a/Application/BaseQuery.h b/Application/BaseQuery.h
index 8a4172c..158b9b1 100644
--- a/Application/BaseQuery.h
+++ b/Application/BaseQuery.h
@@ -72,11 +72,10 @@ class APPLICATION_API BaseQuery
includes_copy.erase(std::remove_if(includes_copy.begin(), includes_copy.end(), [&](std::string s) { return s == D.name; }), includes_copy.end());
#ifdef ASYNC
auto inner_items_future = std::async(std::launch::async, &BaseQuery::GetAll, this, table_name + "Id = '" + client->GetStringResult(PKEY) + "'", includes);
- auto inner_items = inner_items_future.get();
+ (item.get()->*(D).pointer) = inner_items_future.get();
#else
- auto inner_items = GetAll(table_name + "Id = '" + client->GetStringResult(PKEY) + "'", includes);
+ (item.get()->*(D).pointer) = GetAll(table_name + "Id = '" + client->GetStringResult(PKEY) + "'", includes);
#endif // ASYNC
- (item.get()->*(D).pointer) = std::any_cast(inner_items);
}
}
else if constexpr (is_shared_ptr_v)
@@ -91,11 +90,11 @@ class APPLICATION_API BaseQuery
includes_copy.erase(std::remove_if(includes_copy.begin(), includes_copy.end(), [&](std::string s) { return s == D.name; }), includes_copy.end());
#ifdef ASYNC
auto inner_item_future = std::async(std::launch::async, &BaseQuery::GetSingle, this, PKEY " = '" + id + "'", includes);
- auto inner_item = inner_item_future.get();
+ (item.get()->*(D).pointer) = inner_item_future.get();
#else
- auto inner_item = GetSingle(PKEY " = '" + id + "'", includes);
+ (item.get()->*(D).pointer) = GetSingle(PKEY " = '" + id + "'", includes);
#endif // ASYNC
- (item.get()->*(D).pointer) = std::any_cast(inner_item);
+
}
}
}
@@ -162,11 +161,10 @@ class APPLICATION_API BaseQuery
includes_copy.erase(std::remove_if(includes_copy.begin(), includes_copy.end(), [&](std::string s) { return s == D.name; }), includes_copy.end());
#ifdef ASYNC
auto inner_items_future = std::async(std::launch::async, &BaseQuery::GetAll, this, table_name + "Id = '" + client->GetStringResult(PKEY) + "'", includes);
- auto inner_items(inner_items_future.get());
+ (item.get()->*(D).pointer) = (inner_items_future.get());
#else
- auto inner_items = GetAll(table_name + "Id = '" + client->GetStringResult(PKEY) + "'", includes);
+ (item.get()->*(D).pointer) = GetAll(table_name + "Id = '" + client->GetStringResult(PKEY) + "'", includes);
#endif // ASYNC
- (item.get()->*(D).pointer) = std::any_cast(inner_items);
}
}
else if constexpr (is_shared_ptr_v)
@@ -181,11 +179,10 @@ class APPLICATION_API BaseQuery
includes_copy.erase(std::remove_if(includes_copy.begin(), includes_copy.end(), [&](std::string s) { return s == D.name; }), includes_copy.end());
#ifdef ASYNC
auto inner_item_future = std::async(std::launch::async, &BaseQuery::GetSingle, this, PKEY " = '" + id + "'", includes);
- auto inner_item = inner_item_future.get();
+ (item.get()->*(D).pointer) = inner_item_future.get();
#else
- auto inner_item = GetSingle(PKEY " = '" + id + "'", includes);
+ (item.get()->*(D).pointer) = GetSingle(PKEY " = '" + id + "'", includes);
#endif // ASYNC
- (item.get()->*(D).pointer) = std::any_cast(inner_item);
}
}
@@ -302,11 +299,10 @@ class APPLICATION_API BaseQuery
includes_copy.erase(std::remove_if(includes_copy.begin(), includes_copy.end(), [&](std::string s) { return s == D.name; }), includes_copy.end());
#ifdef ASYNC
auto inner_items_future = std::async(std::launch::async, &BaseQuery::GetAll, this, table_name + "Id = '" + client->GetStringResult(PKEY) + "'", includes);
- auto inner_items = inner_items_future.get();
+ (item.get()->*(D).pointer) = inner_items_future.get();
#else
- auto inner_items = GetAll(table_name + "Id = '" + client->GetStringResult(PKEY) + "'", includes);
+ (item.get()->*(D).pointer) = GetAll(table_name + "Id = '" + client->GetStringResult(PKEY) + "'", includes);
#endif // ASYNC
- (item.get()->*(D).pointer) = std::any_cast(inner_items);
}
}
else if constexpr (is_shared_ptr_v)
@@ -321,11 +317,10 @@ class APPLICATION_API BaseQuery
includes_copy.erase(std::remove_if(includes_copy.begin(), includes_copy.end(), [&](std::string s) { return s == D.name; }), includes_copy.end());
#ifdef ASYNC
auto inner_ptr_item_future = std::async(std::launch::async, &BaseQuery::GetSingle, this, PKEY " = '" + id + "'", includes);
- auto inner_ptr_item = inner_ptr_item_future.get();
+ (item.get()->*(D).pointer) = inner_ptr_item_future.get();
#else
- auto inner_ptr_item = GetSingle(PKEY " = '" + id + "'", includes);
+ (item.get()->*(D).pointer) = GetSingle(PKEY " = '" + id + "'", includes);
#endif // ASYNC
- (item.get()->*(D).pointer) = std::any_cast(inner_ptr_item);
}
}
@@ -400,11 +395,10 @@ class APPLICATION_API BaseQuery
includes_copy.erase(std::remove_if(includes_copy.begin(), includes_copy.end(), [&](std::string s) { return s == D.name; }), includes_copy.end());
#ifdef ASYNC
auto inner_items_future = std::async(std::launch::async, &BaseQuery::GetAll, this, table_name + "Id = '" + client->GetStringResult(PKEY) + "'", includes_copy);
- auto inner_items = inner_items_future.get();
+ (item.get()->*(D).pointer) = inner_items_future.get();
#else
- auto inner_items = GetAll(table_name + "Id = '" + client->GetStringResult(PKEY) + "'", includes);
+ (item.get()->*(D).pointer) = GetAll(table_name + "Id = '" + client->GetStringResult(PKEY) + "'", includes);
#endif // ASYNC
- (item.get()->*(D).pointer) = std::any_cast(inner_items);
}
}
else if constexpr (is_shared_ptr_v)
@@ -419,11 +413,10 @@ class APPLICATION_API BaseQuery
includes_copy.erase(std::remove_if(includes_copy.begin(), includes_copy.end(), [&](std::string s) { return s == D.name; }), includes_copy.end());
#ifdef ASYNC
auto inner_item_future = std::async(std::launch::async, &BaseQuery::GetSingle, this, PKEY " = '" + id + "'", includes);
- auto inner_item = inner_item_future.get();
+ (item.get()->*(D).pointer) = inner_item_future.get();
#else
- auto inner_item = GetSingle(PKEY " = '" + id + "'", includes);
+ (item.get()->*(D).pointer) = GetSingle(PKEY " = '" + id + "'", includes);
#endif // ASYNC
- (item.get()->*(D).pointer) = std::any_cast(inner_item);
}
}
diff --git a/Application/BaseQueryV3.h b/Application/BaseQueryV3.h
new file mode 100644
index 0000000..3c355df
--- /dev/null
+++ b/Application/BaseQueryV3.h
@@ -0,0 +1,28 @@
+#pragma once
+#include
+#include
+
+//TODO: Implement Query class
+
+template ::type>
+class Query
+{
+public:
+ Query();
+ ~Query();
+ Query& Where(std::string where)
+ {
+ _where = where;
+ return *this;
+ }
+
+ template
+ Query& Include(F f)
+ {
+ _includes.push_back(typeid(f()).name());
+ return *this;
+ }
+
+private:
+ std::string _command;
+};
\ No newline at end of file