FieldTypeProvider   A
last analyzed

Complexity

Total Complexity 14

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 14
eloc 21
c 2
b 0
f 0
dl 0
loc 36
rs 10

2 Methods

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