aboutsummaryrefslogtreecommitdiff
path: root/src/base_tab
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2022-12-27 11:42:36 +0100
committerLoic Guegan <manzerbredes@mailbox.org>2022-12-27 11:42:36 +0100
commitf40fd3e7a4c5fd36c977ad5343de4fe7859cbbbe (patch)
treee5021b8758c6fd9aa2a01ebca78e4cbae59eaf2b /src/base_tab
parente5ba738f72fe12d634b341dd6fdc58b078690c11 (diff)
Update db code
Diffstat (limited to 'src/base_tab')
-rw-r--r--src/base_tab/gamebase/GameBase.cpp13
-rw-r--r--src/base_tab/gamebase/GameBase.hpp10
2 files changed, 22 insertions, 1 deletions
diff --git a/src/base_tab/gamebase/GameBase.cpp b/src/base_tab/gamebase/GameBase.cpp
new file mode 100644
index 0000000..e8f9a59
--- /dev/null
+++ b/src/base_tab/gamebase/GameBase.cpp
@@ -0,0 +1,13 @@
+#include "GameBase.hpp"
+#include "PGNGameBase.hpp"
+
+std::shared_ptr<GameBase> OpenDatabase(const std::string &dbpath, bool createIfNotExist){
+ wxFileName file(dbpath);
+ wxString ext = file.GetExt().Lower();
+ if (ext == "pgn") {
+ if(createIfNotExist && !file.Exists())
+ PGNGameBase::CreateDatabaseFile(dbpath);
+ return std::shared_ptr<GameBase>(new PGNGameBase(dbpath));
+ }
+ return nullptr;
+} \ No newline at end of file
diff --git a/src/base_tab/gamebase/GameBase.hpp b/src/base_tab/gamebase/GameBase.hpp
index c87078d..008b36e 100644
--- a/src/base_tab/gamebase/GameBase.hpp
+++ b/src/base_tab/gamebase/GameBase.hpp
@@ -27,4 +27,12 @@ public:
* @brief An additionnal static method is expected with the following signature:
* static void CreateDatabaseFile(std::string path);
*/
-}; \ No newline at end of file
+};
+
+/**
+ * @brief Open a data
+ *
+ * @param dbpath
+ * @return std::shared_ptr<GameBase>
+ */
+std::shared_ptr<GameBase> OpenDatabase(const std::string &dbpath, bool createIfNotExist=true); \ No newline at end of file