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