FieldTypeProvider   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 5
eloc 12
dl 0
loc 27
rs 10
c 2
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getFieldTypes() 0 11 4
A getTypeFromNativeType() 0 5 1
1
<?php
2
3
namespace Kir\MySQL\Builder\Helpers;
4
5
use Kir\MySQL\Builder\QueryStatement;
6
7
abstract class FieldTypeProvider {
8
	/**
9
	 * @param QueryStatement $statement
10
	 * @return array<string, string>
11
	 */
12
	public static function getFieldTypes(QueryStatement $statement): array {
13
		$fieldTypes = [];
14
		for($i = 0; $column = $statement->getColumnMeta($i); $i++) {
15
			$name = $column['name'] ?? null;
16
			$nativeType = $column['native_type'] ?? null;
17
			if(is_string($name) && is_string($nativeType)) {
18
				$fieldTypes[$name] = self::getTypeFromNativeType($nativeType);
19
			}
20
		}
21
22
		return $fieldTypes;
23
	}
24
25
	/**
26
	 * @param string $type
27
	 * @return string
28
	 */
29
	private static function getTypeFromNativeType(string $type): string {
30
		return match ($type) {
31
			'NEWDECIMAL', 'DECIMAL', 'FLOAT', 'DOUBLE' => 'f',
32
			'TINY', 'SHORT', 'LONG', 'LONGLONG', 'INT24' => 'i',
33
			default => $type,
34
		};
35
	}
36
}
37