WP-Query-Builder/enums/ColumnTypes.php
2025-01-27 19:35:17 +01:00

35 lines
900 B
PHP

<?php
namespace DatabaseHelper\enums;
enum ColumnTypes
{
case INT;
case FLOAT;
case STRING;
case BOOL;
case ARRAY;
case DATE;
public function cast(mixed $value): mixed {
return match ($this) {
self::INT => (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',
};
}
}