diff --git a/php/src/db/CapacitorStorage.php b/php/src/db/CapacitorStorage.php index 114fdfb..fb0eb93 100644 --- a/php/src/db/CapacitorStorage.php +++ b/php/src/db/CapacitorStorage.php @@ -45,10 +45,19 @@ abstract class CapacitorStorage { const GENLIC_DEFINITION = "varchar(80)"; const GENLIB_DEFINITION = "varchar(255)"; const GENTEXT_DEFINITION = "mediumtext"; + const GENBOOL_DEFINITION = "integer(1)"; const GENUUID_DEFINITION = "varchar(36)"; protected static function gencol($def): string { if (!is_string($def)) $def = strval($def); + $def = trim($def); + $parts = preg_split('/\s+/', $def, 2); + if (count($parts) == 2) { + $def = $parts[0]; + $rest = " $parts[1]"; + } else { + $rest = null; + } switch ($def) { case "serdata": $def = static::SERDATA_DEFINITION; break; case "sersum": $def = static::SERSUM_DEFINITION; break; @@ -57,9 +66,10 @@ abstract class CapacitorStorage { case "genlic": $def = static::GENLIC_DEFINITION; break; case "genlib": $def = static::GENLIB_DEFINITION; break; case "gentext": $def = static::GENTEXT_DEFINITION; break; + case "genbool": $def = static::GENBOOL_DEFINITION; break; case "genuuid": $def = static::GENUUID_DEFINITION; break; } - return $def; + return "$def$rest"; } const COLUMN_DEFINITIONS = [ @@ -365,8 +375,9 @@ abstract class CapacitorStorage { $values = func::call([$channel, "getItemValues"], $item, ...$args); if ($values === [false]) return 0; - $newItem = A::pop($values, "item"); - if ($newItem !== null) $item = $newItem; + if (array_key_exists("item", $values)) { + $item = A::pop($values, "item"); + } $row = cl::merge( $channel->getSum("item", $item), diff --git a/php/src/db/pgsql/PgsqlStorage.php b/php/src/db/pgsql/PgsqlStorage.php index c3dc0b5..649b3eb 100644 --- a/php/src/db/pgsql/PgsqlStorage.php +++ b/php/src/db/pgsql/PgsqlStorage.php @@ -11,6 +11,7 @@ class PgsqlStorage extends CapacitorStorage { const SERTS_DEFINITION = "timestamp"; const GENSERIAL_DEFINITION = "serial primary key"; const GENTEXT_DEFINITION = "text"; + const GENBOOL_DEFINITION = "boolean"; const GENUUID_DEFINITION = "uuid"; function __construct($pgsql) {