Support timestamp() with customizable format in XML query

This commit is contained in:
Kijin Sung 2022-12-24 22:38:18 +09:00
parent 28323f1bb8
commit 23a827923e
3 changed files with 16 additions and 7 deletions

View file

@ -8,6 +8,8 @@
<column name="nick_name" var="nick_name" notnull="notnull" default="null" />
<column name="voted_count" operation="plus" var="voted_count" filter="number" />
<column name="blamed_count" operation="minus" var="blamed_count" filter="number" />
<column name="regdate" var="regdate" default="timestamp()" />
<column name="last_update" var="last_update" default="timestamp(y.m.d)" />
</columns>
<conditions>
<condition operation="equal" column="document_srl" var="document_srl" notnull="notnull" />

View file

@ -399,7 +399,7 @@ class DBQueryParserTest extends \Codeception\TestCase\Test
$this->assertNull($query->tables['documents']->alias);
$this->assertEquals('comments', $query->tables['c']->name);
$this->assertEquals('c', $query->tables['c']->alias);
$this->assertEquals(4, count($query->columns));
$this->assertEquals(6, count($query->columns));
$this->assertTrue($query->columns[0] instanceof Rhymix\Framework\Parsers\DBQuery\ColumnWrite);
$this->assertEquals('member_srl', $query->columns[0]->name);
$this->assertEquals('member_srl', $query->columns[0]->var);
@ -421,15 +421,17 @@ class DBQueryParserTest extends \Codeception\TestCase\Test
$sql = $query->getQueryString('rx_', $args);
$params = $query->getQueryParams();
$this->assertEquals('UPDATE `rx_documents`, `rx_comments` AS `c` SET `member_srl` = ?, `nick_name` = ?, `voted_count` = `voted_count` + ? WHERE `document_srl` = ?', $sql);
$this->assertEquals(['456', '닉네임', '5', '123'], $params);
$this->assertEquals('UPDATE `rx_documents`, `rx_comments` AS `c` SET `member_srl` = ?, `nick_name` = ?, `voted_count` = `voted_count` + ?, `regdate` = ?, `last_update` = ? WHERE `document_srl` = ?', $sql);
$this->assertEquals(['456', '닉네임', '5'], array_slice($params, 0, 3));
$this->assertRegexp('/^20[0-9]{2}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$/', $params[3]);
$this->assertRegexp('/^[0-9]{2}.[0-9]{2}.[0-9]{2}$/', $params[4]);
$args = array('document_srl' => 123, 'member_srl' => 456, 'voted_count' => 5);
$args = array('document_srl' => 123, 'member_srl' => 456, 'voted_count' => 5, 'regdate' => 'foo', 'last_update' => 'bar');
$sql = $query->getQueryString('rx_', $args);
$params = $query->getQueryParams();
$this->assertEquals('UPDATE `rx_documents`, `rx_comments` AS `c` SET `member_srl` = ?, `nick_name` = NULL, `voted_count` = `voted_count` + ? WHERE `document_srl` = ?', $sql);
$this->assertEquals(['456', '5', '123'], $params);
$this->assertEquals('UPDATE `rx_documents`, `rx_comments` AS `c` SET `member_srl` = ?, `nick_name` = NULL, `voted_count` = `voted_count` + ?, `regdate` = ?, `last_update` = ? WHERE `document_srl` = ?', $sql);
$this->assertEquals(['456', '5', 'foo', 'bar', '123'], $params);
}
public function testDeleteQuery()