move from old repository
This commit is contained in:
46
enums/Type.php
Normal file
46
enums/Type.php
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
namespace DatabaseHelper\enums;
|
||||
use DateTime;
|
||||
|
||||
enum Type
|
||||
{
|
||||
case INT;
|
||||
case FLOAT;
|
||||
case STRING;
|
||||
case BOOL;
|
||||
case ARRAY;
|
||||
case DATE;
|
||||
|
||||
public function valCast(mixed $value): mixed {
|
||||
return match ($this) {
|
||||
self::INT => (int) $value,
|
||||
self::FLOAT => (float) $value,
|
||||
self::STRING => (string) $value,
|
||||
self::BOOL => filter_var($value, FILTER_VALIDATE_BOOLEAN),
|
||||
self::ARRAY => is_array($value) ? $value : (json_decode($value, true) ?? []),
|
||||
self::DATE => $value instanceof DateTime ? $value : (strtotime($value) ? new DateTime($value) : null),
|
||||
};
|
||||
}
|
||||
|
||||
public function dbCast(mixed $value): mixed {
|
||||
return match ($this) {
|
||||
self::INT => intval($value),
|
||||
self::FLOAT => floatval($value),
|
||||
self::STRING => esc_sql($value),
|
||||
self::BOOL => filter_var($value, FILTER_VALIDATE_BOOLEAN) ? "TRUE" : "FALSE",
|
||||
self::ARRAY => json_encode($value),
|
||||
self::DATE => $value instanceof DateTime ? $value->format('Y-m-d H:i:s') : json_encode($value)
|
||||
};
|
||||
}
|
||||
|
||||
public function toString(): string {
|
||||
return match ($this) {
|
||||
self::INT => 'INTEGER',
|
||||
self::FLOAT => 'FLOAT',
|
||||
self::STRING => 'VARCHAR(255)',
|
||||
self::BOOL => 'BOOLEAN',
|
||||
self::ARRAY => 'JSON',
|
||||
self::DATE => 'DATETIME',
|
||||
};
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user