summaryrefslogtreecommitdiff
path: root/libs/picodb/lib/PicoDb/DriverFactory.php
diff options
context:
space:
mode:
authorFrédéric Guillot <fred@kanboard.net>2018-06-21 14:13:41 -0700
committerFrédéric Guillot <fred@kanboard.net>2018-06-21 14:13:41 -0700
commita491348d442ab8e6cd2fa403d4365cdad78e52ce (patch)
treea00f575d82afb2c9051bad95398b4250f4a3d44d /libs/picodb/lib/PicoDb/DriverFactory.php
parentc73ac5f1f818b6b21083f6785b4b2f6d778a6496 (diff)
Vendoring deprecated composer libs
Diffstat (limited to 'libs/picodb/lib/PicoDb/DriverFactory.php')
-rw-r--r--libs/picodb/lib/PicoDb/DriverFactory.php45
1 files changed, 45 insertions, 0 deletions
diff --git a/libs/picodb/lib/PicoDb/DriverFactory.php b/libs/picodb/lib/PicoDb/DriverFactory.php
new file mode 100644
index 00000000..13151ba7
--- /dev/null
+++ b/libs/picodb/lib/PicoDb/DriverFactory.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace PicoDb;
+
+use LogicException;
+use PicoDb\Driver\Mssql;
+use PicoDb\Driver\Mysql;
+use PicoDb\Driver\Postgres;
+use PicoDb\Driver\Sqlite;
+
+/**
+ * Class DriverFactory
+ *
+ * @package PicoDb
+ * @author Frederic Guillot
+ */
+class DriverFactory
+{
+ /**
+ * Get database driver from settings or environment URL
+ *
+ * @access public
+ * @param array $settings
+ * @return Mssql|Mysql|Postgres|Sqlite
+ */
+ public static function getDriver(array $settings)
+ {
+ if (! isset($settings['driver'])) {
+ throw new LogicException('You must define a database driver');
+ }
+
+ switch ($settings['driver']) {
+ case 'sqlite':
+ return new Sqlite($settings);
+ case 'mssql':
+ return new Mssql($settings);
+ case 'mysql':
+ return new Mysql($settings);
+ case 'postgres':
+ return new Postgres($settings);
+ default:
+ throw new LogicException('This database driver is not supported');
+ }
+ }
+}