From ec6bc9aaaf650972c86ed1841cdbed17508e1eba Mon Sep 17 00:00:00 2001 From: Jan-Niclas Loosen Date: Mon, 27 Jan 2025 19:35:17 +0100 Subject: [PATCH] rename and add interfaces --- Database.php | 44 +++++++++++++++++++ enums/CascadeTypes.php | 21 +++++++++ enums/CharsetTypes.php | 23 ++++++++++ enums/CollationTypes.php | 24 ++++++++++ enums/ColumnTypes.php | 34 ++++++++++++++ enums/EngineTypes.php | 15 +++++++ .../DatabaseHelper.php | 33 +++++++------- .../InsertionBuilder.php | 2 +- .../MigrationBlueprint.php | 2 +- .../Update.php => interfaces/QueryBuilder.php | 2 +- interfaces/TableBlueprint.php | 17 +++++++ .../UpdateBuilder.php | 2 +- src/interfaces/Table.php | 8 ---- testing.php | 1 + 14 files changed, 199 insertions(+), 29 deletions(-) create mode 100644 Database.php create mode 100644 enums/CascadeTypes.php create mode 100644 enums/CharsetTypes.php create mode 100644 enums/CollationTypes.php create mode 100644 enums/ColumnTypes.php create mode 100644 enums/EngineTypes.php rename src/interfaces/Database.php => interfaces/DatabaseHelper.php (57%) rename src/interfaces/Migration.php => interfaces/InsertionBuilder.php (74%) rename src/interfaces/Query.php => interfaces/MigrationBlueprint.php (73%) rename src/interfaces/Update.php => interfaces/QueryBuilder.php (77%) create mode 100644 interfaces/TableBlueprint.php rename src/interfaces/Insertion.php => interfaces/UpdateBuilder.php (76%) delete mode 100644 src/interfaces/Table.php create mode 100644 testing.php diff --git a/Database.php b/Database.php new file mode 100644 index 0000000..27ab225 --- /dev/null +++ b/Database.php @@ -0,0 +1,44 @@ +prefix; + + foreach ($tableName as &$name) + if (!str_starts_with($name, $dbPrefix)) + $name = $dbPrefix . $name; + } +} \ No newline at end of file diff --git a/enums/CascadeTypes.php b/enums/CascadeTypes.php new file mode 100644 index 0000000..f8f50f0 --- /dev/null +++ b/enums/CascadeTypes.php @@ -0,0 +1,21 @@ + 'CASCADE', + self::SET_NULL => 'SET NULL', + self::NO_ACTION => 'NO ACTION', + self::RESTRICT => 'RESTRICT', + self::SET_DEFAULT => 'SET DEFAULT', + }; + } +} \ No newline at end of file diff --git a/enums/CharsetTypes.php b/enums/CharsetTypes.php new file mode 100644 index 0000000..5781a66 --- /dev/null +++ b/enums/CharsetTypes.php @@ -0,0 +1,23 @@ + 'utf8', + self::UTF8MB4 => 'utf8mb4', + self::LATIN1 => 'latin1', + self::ASCII => 'ascii', + self::UTF16 => 'utf16', + self::UTF32 => 'utf32', + }; + } +} diff --git a/enums/CollationTypes.php b/enums/CollationTypes.php new file mode 100644 index 0000000..32cf020 --- /dev/null +++ b/enums/CollationTypes.php @@ -0,0 +1,24 @@ + 'utf8_general_ci', + self::UTF8MB4_UNICODE_CI => 'utf8mb4_unicode_ci', + self::LATIN1_SWEDISH_CI => 'latin1_swedish_ci', + self::UTF8MB4_BIN => 'utf8mb4_bin', + self::UTF8_BIN => 'utf8_bin', + self::UTF8_GENERAL_BIN => 'utf8_general_bin', + }; + } +} diff --git a/enums/ColumnTypes.php b/enums/ColumnTypes.php new file mode 100644 index 0000000..d098897 --- /dev/null +++ b/enums/ColumnTypes.php @@ -0,0 +1,34 @@ + (int) $value, + self::FLOAT => (float) $value, + self::STRING => (string) $value, + self::BOOL => (bool) $value, + self::ARRAY => is_array($value) ? $value : json_decode($value, true), + self::DATE => $value instanceof \DateTime ? $value : new \DateTime($value), + }; + } + + public function type(): string { + return match ($this) { + self::INT => 'INTEGER', + self::FLOAT => 'FLOAT', + self::STRING => 'VARCHAR(255)', + self::BOOL => 'BOOLEAN', + self::ARRAY => 'JSON', + self::DATE => 'DATETIME', + }; + } +} diff --git a/enums/EngineTypes.php b/enums/EngineTypes.php new file mode 100644 index 0000000..1f6293b --- /dev/null +++ b/enums/EngineTypes.php @@ -0,0 +1,15 @@ + 'InnoDB', + self::MYISAM => 'MyISAM', + }; + } +} \ No newline at end of file diff --git a/src/interfaces/Database.php b/interfaces/DatabaseHelper.php similarity index 57% rename from src/interfaces/Database.php rename to interfaces/DatabaseHelper.php index ef2546f..fcbf2ab 100644 --- a/src/interfaces/Database.php +++ b/interfaces/DatabaseHelper.php @@ -1,51 +1,51 @@