From f85ffeb1a8c7c23c69ae0227b28623c902f230e8 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Mon, 15 Feb 2016 02:41:46 +0100 Subject: [PATCH] check for precence of the query function for each db connector. PG fixes for todo --- db/qq/QI.php | 4 ++++ db/qq/QP.php | 10 +++++++++- db/qq/QQ.php | 8 ++++++++ .../qq/SYS_SAIMOD_TODO_COUNT_FREE.php | 12 +++++++++++ .../qq/SYS_SAIMOD_TODO_COUNT_MINE.php | 12 +++++++++++ .../qq/SYS_SAIMOD_TODO_COUNT_OTHERS.php | 12 +++++++++++ .../qq/SYS_SAIMOD_TODO_COUNT_TYPE.php | 12 +++++++++++ .../qq/SYS_SAIMOD_TODO_EDIT.php | 11 +++++----- .../qq/SYS_SAIMOD_TODO_LIST_FREE.php | 20 +++++++++++++++++++ .../qq/SYS_SAIMOD_TODO_LIST_MINE.php | 19 ++++++++++++++++++ .../qq/SYS_SAIMOD_TODO_LIST_OTHERS.php | 20 +++++++++++++++++++ .../qq/SYS_SAIMOD_TODO_LIST_TYPE.php | 20 +++++++++++++++++++ 12 files changed, 154 insertions(+), 6 deletions(-) diff --git a/db/qq/QI.php b/db/qq/QI.php index 89abaf2..820549a 100644 --- a/db/qq/QI.php +++ b/db/qq/QI.php @@ -6,6 +6,8 @@ class QI { $dbinfo = \SYSTEM\system::getSystemDBInfo();} if($dbinfo instanceof \SYSTEM\DB\DBInfoPG){ + if(!\is_callable(static::get_class().'::files_pgsql')){ + throw new \SYSTEM\LOG\ERROR(static::get_class().' failed: no files_pgsql implementation present.');} $files = static::files_pgsql(); $command = 'psql'. ' -U ' . $dbinfo->m_user. @@ -13,6 +15,8 @@ class QI { ' -a '. ' -f ${file} 2>&1'; } else if ($dbinfo instanceof \SYSTEM\DB\DBInfoMYS){ + if(!\is_callable(static::get_class().'::files_mysql')){ + throw new \SYSTEM\LOG\ERROR(static::get_class().' failed: no files_mysql implementation present.');} $files = static::files_mysql(); $command = 'mysql'. ' --host=' . $dbinfo->m_host. diff --git a/db/qq/QP.php b/db/qq/QP.php index 7197611..85d7bff 100644 --- a/db/qq/QP.php +++ b/db/qq/QP.php @@ -8,12 +8,20 @@ class QP { $con = new \SYSTEM\DB\Connection($dbinfo); try{ if($dbinfo instanceof \SYSTEM\DB\DBInfoPG){ + if(!\is_callable(static::get_class().'::pgsql')){ + throw new \SYSTEM\LOG\ERROR(static::get_class().' failed: no pgsql implementation present.');} return $con->prepare(static::get_class(),static::pgsql(),$params); } else if ($dbinfo instanceof \SYSTEM\DB\DBInfoMYS){ + if(!\is_callable(static::get_class().'::mysql')){ + throw new \SYSTEM\LOG\ERROR(static::get_class().' failed: no mysql implementation present.');} return $con->prepare(static::get_class(),static::mysql(),$params); - } else if ($dbinfo instanceof \SYSTEM\DB\DBInfoAMQP){ + } else if ($dbinfo instanceof \SYSTEM\DB\DBInfoAMQP && is_callable(static::amqp())){ + if(!\is_callable(static::get_class().'::amqp')){ + throw new \SYSTEM\LOG\ERROR(static::get_class().' failed: no amqp implementation present.');} return $con->prepare(static::get_class(),static::amqp(),$params); } else if ($dbinfo instanceof \SYSTEM\DB\DBInfoSQLite){ + if(!\is_callable(static::get_class().'::sqlite')){ + throw new \SYSTEM\LOG\ERROR(static::get_class().' failed: no sqlite implementation present.');} return $con->prepare(static::get_class(),static::sqlite(),$params); } } catch (\Exception $e){ diff --git a/db/qq/QQ.php b/db/qq/QQ.php index 4e941f0..6091d20 100644 --- a/db/qq/QQ.php +++ b/db/qq/QQ.php @@ -9,12 +9,20 @@ class QQ { try{ if($dbinfo instanceof \SYSTEM\DB\DBInfoPG){ + if(!\is_callable(static::get_class().'::pgsql')){ + throw new \SYSTEM\LOG\ERROR(static::get_class().' failed: no pgsql implementation present.');} return $con->query(static::pgsql()); } else if ($dbinfo instanceof \SYSTEM\DB\DBInfoMYS){ + if(!\is_callable(static::get_class().'::mysql')){ + throw new \SYSTEM\LOG\ERROR(static::get_class().' failed: no mysql implementation present.');} return $con->query(static::mysql()); } else if ($dbinfo instanceof \SYSTEM\DB\DBInfoAMQP){ + if(!\is_callable(static::get_class().'::amqp')){ + throw new \SYSTEM\LOG\ERROR(static::get_class().' failed: no amqp implementation present.');} return $con->query(static::amqp()); } else if ($dbinfo instanceof \SYSTEM\DB\DBInfoSQLite){ + if(!\is_callable(static::get_class().'::sqlite')){ + throw new \SYSTEM\LOG\ERROR(static::get_class().' failed: no sqlite implementation present.');} return $con->query(static::sqlite()); } } catch (\Exception $e){ diff --git a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT_FREE.php b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT_FREE.php index b0de3be..fa1e86b 100644 --- a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT_FREE.php +++ b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT_FREE.php @@ -2,6 +2,18 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_TODO_COUNT_FREE extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} + public static function pgsql(){return +'SELECT COUNT(*) as count FROM('. +'SELECT todo."ID" FROM '.\SYSTEM\SQL\system_todo::NAME_PG.' as todo'. +' LEFT JOIN '.\SYSTEM\SQL\system_todo_assign::NAME_PG.' as assign ON todo."'.\SYSTEM\SQL\system_todo::FIELD_ID.'"=assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_TODO. +' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_PG.' as creator ON todo.'.\SYSTEM\SQL\system_todo::FIELD_USER.'=creator.'.\SYSTEM\SQL\system_user::FIELD_ID. +' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_PG.' as assignee ON assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.'=assignee.'.\SYSTEM\SQL\system_user::FIELD_ID. +' WHERE '.\SYSTEM\SQL\system_todo::FIELD_STATE.'=$1'. +' AND assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.' IS NULL'. +' AND (todo.'.\SYSTEM\SQL\system_todo::FIELD_MESSAGE.' LIKE $2 OR creator.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' LIKE $3 OR assignee.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' LIKE $4)'. +' GROUP BY todo."ID"'. +') as a;'; + } public static function mysql(){return 'SELECT COUNT(*) as count FROM('. 'SELECT todo.id FROM '.\SYSTEM\SQL\system_todo::NAME_MYS.' as todo'. diff --git a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT_MINE.php b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT_MINE.php index 744483c..7405907 100644 --- a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT_MINE.php +++ b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT_MINE.php @@ -2,6 +2,18 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_TODO_COUNT_MINE extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} + public static function pgsql(){return +'SELECT COUNT(*) as count FROM('. +'SELECT todo."ID" FROM '.\SYSTEM\SQL\system_todo::NAME_PG.' as todo'. +' LEFT JOIN '.\SYSTEM\SQL\system_todo_assign::NAME_PG.' as assign ON todo."'.\SYSTEM\SQL\system_todo::FIELD_ID.'"=assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_TODO. +' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_PG.' as creator ON todo.'.\SYSTEM\SQL\system_todo::FIELD_USER.'=creator.'.\SYSTEM\SQL\system_user::FIELD_ID. +' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_PG.' as assignee ON assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.'=assignee.'.\SYSTEM\SQL\system_user::FIELD_ID. +' WHERE '.\SYSTEM\SQL\system_todo::FIELD_STATE.'=$1'. +' AND assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.' = $2'. +' AND (todo.'.\SYSTEM\SQL\system_todo::FIELD_MESSAGE.' LIKE $3 OR creator.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' LIKE $4 OR assignee.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' LIKE $5)'. +' GROUP BY todo."ID"'. +') as a;'; + } public static function mysql(){return 'SELECT COUNT(*) as count FROM('. 'SELECT todo.id FROM '.\SYSTEM\SQL\system_todo::NAME_MYS.' as todo'. diff --git a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT_OTHERS.php b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT_OTHERS.php index f1dcf18..db0b045 100644 --- a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT_OTHERS.php +++ b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT_OTHERS.php @@ -2,6 +2,18 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_TODO_COUNT_OTHERS extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} + public static function pgsql(){return +'SELECT COUNT(*) as count FROM('. +'SELECT todo."ID" FROM '.\SYSTEM\SQL\system_todo::NAME_PG.' as todo'. +' LEFT JOIN '.\SYSTEM\SQL\system_todo_assign::NAME_PG.' as assign ON todo."'.\SYSTEM\SQL\system_todo::FIELD_ID.'"=assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_TODO. +' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_PG.' as creator ON todo.'.\SYSTEM\SQL\system_todo::FIELD_USER.'=creator.'.\SYSTEM\SQL\system_user::FIELD_ID. +' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_PG.' as assignee ON assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.'=assignee.'.\SYSTEM\SQL\system_user::FIELD_ID. +' WHERE '.\SYSTEM\SQL\system_todo::FIELD_STATE.'=$1'. +' AND NOT assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.' = $2'. +' AND (todo.'.\SYSTEM\SQL\system_todo::FIELD_MESSAGE.' LIKE $3 OR creator.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' LIKE $4 OR assignee.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' LIKE $5)'. +' GROUP BY todo."ID"'. +') as a;'; + } public static function mysql(){return 'SELECT COUNT(*) as count FROM ('. ' SELECT todo.id'. diff --git a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT_TYPE.php b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT_TYPE.php index b7622d1..eebd5a2 100644 --- a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT_TYPE.php +++ b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_COUNT_TYPE.php @@ -2,6 +2,18 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_TODO_COUNT_TYPE extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} + public static function pgsql(){return +'SELECT COUNT(*) as count FROM('. +'SELECT todo."ID" FROM '.\SYSTEM\SQL\system_todo::NAME_PG.' as todo'. +' LEFT JOIN '.\SYSTEM\SQL\system_todo_assign::NAME_PG.' as assign ON todo."'.\SYSTEM\SQL\system_todo::FIELD_ID.'"=assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_TODO. +' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_PG.' as creator ON todo.'.\SYSTEM\SQL\system_todo::FIELD_USER.'=creator.'.\SYSTEM\SQL\system_user::FIELD_ID. +' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_PG.' as assignee ON assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.'=assignee.'.\SYSTEM\SQL\system_user::FIELD_ID. +' WHERE '.\SYSTEM\SQL\system_todo::FIELD_STATE.'=$1'. +' AND todo.'.\SYSTEM\SQL\system_todo::FIELD_TYPE.' = $2'. +' AND (todo.'.\SYSTEM\SQL\system_todo::FIELD_MESSAGE.' LIKE $3 OR creator.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' LIKE $4 OR assignee.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' LIKE $5)'. +' GROUP BY todo."ID"'. +') as a;'; + } public static function mysql(){return 'SELECT COUNT(*) as count FROM ('. ' SELECT todo.id'. diff --git a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_EDIT.php b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_EDIT.php index 5e1f93a..c1f11e0 100644 --- a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_EDIT.php +++ b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_EDIT.php @@ -2,13 +2,14 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_TODO_EDIT extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} - public static function pqsql(){return -'UPDATE '.\SYSTEM\SQL\system_todo::NAME_PG.' SET '.\SYSTEM\SQL\system_todo::FIELD_MESSAGE.'= $1'. -' WHERE "'.\SYSTEM\SQL\system_todo::FIELD_ID.'"= $2;'; + public static function pgsql(){return +'UPDATE '.\SYSTEM\SQL\system_todo::NAME_PG.' SET '.\SYSTEM\SQL\system_todo::FIELD_MESSAGE.'= $1,' + .\SYSTEM\SQL\system_todo::FIELD_MESSAGE_HASH.'= encode(digest($2, \'sha1\'), \'hex\')'. +'WHERE "'.\SYSTEM\SQL\system_todo::FIELD_ID.'"= $3;'; } public static function mysql(){return -'UPDATE '.\SYSTEM\SQL\system_todo::NAME_MYS.' SET '.\SYSTEM\SQL\system_todo::FIELD_MESSAGE.'= ?, ' +'UPDATE '.\SYSTEM\SQL\system_todo::NAME_MYS.' SET '.\SYSTEM\SQL\system_todo::FIELD_MESSAGE.'= ?,' .\SYSTEM\SQL\system_todo::FIELD_MESSAGE_HASH.'= SHA1(?)'. -' WHERE '.\SYSTEM\SQL\system_todo::FIELD_ID.'= ?;'; +'WHERE '.\SYSTEM\SQL\system_todo::FIELD_ID.'= ?;'; } } \ No newline at end of file diff --git a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_LIST_FREE.php b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_LIST_FREE.php index 7299b4c..a7cb1df 100644 --- a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_LIST_FREE.php +++ b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_LIST_FREE.php @@ -2,6 +2,26 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_TODO_LIST_FREE extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} + public static function pgsql(){return +'SELECT DISTINCT ON (todo_id) * FROM('. + ' SELECT todo."'.\SYSTEM\SQL\system_todo::FIELD_ID.'" as todo_id,'. + ' todo.'.\SYSTEM\SQL\system_todo::FIELD_TYPE.', todo.'.\SYSTEM\SQL\system_todo::FIELD_CLASS.', todo.'.\SYSTEM\SQL\system_todo::FIELD_TIME.', todo.'.\SYSTEM\SQL\system_todo::FIELD_COUNT.', todo.'.\SYSTEM\SQL\system_todo::FIELD_MESSAGE.', todo.'.\SYSTEM\SQL\system_todo::FIELD_REQUEST_URI.', todo.'.\SYSTEM\SQL\system_todo::FIELD_FILE.', todo.'.\SYSTEM\SQL\system_todo::FIELD_LINE.', todo.'.\SYSTEM\SQL\system_todo::FIELD_SERVER_NAME.', todo.'.\SYSTEM\SQL\system_todo::FIELD_SERVER_PORT.', todo.'.\SYSTEM\SQL\system_todo::FIELD_QUERYTIME.', todo.'.\SYSTEM\SQL\system_todo::FIELD_IP.', todo.'.\SYSTEM\SQL\system_todo::FIELD_PRIORITY.','. + ' creator.'.\SYSTEM\SQL\system_user::FIELD_ID.' as creator_id,'. + ' creator.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.','. + ' assignee.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' as assignee,'. + ' assignee.'.\SYSTEM\SQL\system_user::FIELD_ID.' as assignee_id'. + ' FROM '.\SYSTEM\SQL\system_todo::NAME_PG.' as todo'. + ' LEFT JOIN '.\SYSTEM\SQL\system_todo_assign::NAME_PG.' as assign ON todo."'.\SYSTEM\SQL\system_todo::FIELD_ID.'"=assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_TODO. + ' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_PG.' as creator ON todo.'.\SYSTEM\SQL\system_todo::FIELD_USER.'=creator.'.\SYSTEM\SQL\system_user::FIELD_ID. + ' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_PG.' as assignee ON assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.'=assignee.'.\SYSTEM\SQL\system_user::FIELD_ID. + ' WHERE todo.'.\SYSTEM\SQL\system_todo::FIELD_STATE.' = $1'. + ' AND assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.' IS NULL'. + ' AND (todo.'.\SYSTEM\SQL\system_todo::FIELD_MESSAGE.' LIKE $2 OR creator.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' LIKE $3 OR assignee.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' LIKE $4)'. + ' ORDER BY case when assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.' = $5 then 1 else 2 end'. +') as a'; + //' ORDER BY a.'.\SYSTEM\SQL\system_todo::FIELD_PRIORITY.' DESC, a.'.\SYSTEM\SQL\system_todo::FIELD_TYPE.' DESC, a.'.\SYSTEM\SQL\system_todo::FIELD_COUNT.' DESC, a.'.\SYSTEM\SQL\system_todo::FIELD_TIME.' DESC'; + //sorry postgres but ur rly bad! + } public static function mysql(){return 'SELECT * FROM('. ' SELECT todo.'.\SYSTEM\SQL\system_todo::FIELD_ID.' as todo_id,'. diff --git a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_LIST_MINE.php b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_LIST_MINE.php index 2ec5293..fd78103 100644 --- a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_LIST_MINE.php +++ b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_LIST_MINE.php @@ -2,6 +2,25 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_TODO_LIST_MINE extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} + public static function pgsql(){return +'SELECT DISTINCT ON (todo_id) * FROM('. + ' SELECT todo."'.\SYSTEM\SQL\system_todo::FIELD_ID.'" as todo_id,'. + ' todo.'.\SYSTEM\SQL\system_todo::FIELD_TYPE.', todo.'.\SYSTEM\SQL\system_todo::FIELD_CLASS.', todo.'.\SYSTEM\SQL\system_todo::FIELD_TIME.', todo.'.\SYSTEM\SQL\system_todo::FIELD_COUNT.', todo.'.\SYSTEM\SQL\system_todo::FIELD_MESSAGE.', todo.'.\SYSTEM\SQL\system_todo::FIELD_REQUEST_URI.', todo.'.\SYSTEM\SQL\system_todo::FIELD_FILE.', todo.'.\SYSTEM\SQL\system_todo::FIELD_LINE.', todo.'.\SYSTEM\SQL\system_todo::FIELD_SERVER_NAME.', todo.'.\SYSTEM\SQL\system_todo::FIELD_SERVER_PORT.', todo.'.\SYSTEM\SQL\system_todo::FIELD_QUERYTIME.', todo.'.\SYSTEM\SQL\system_todo::FIELD_IP.', todo.'.\SYSTEM\SQL\system_todo::FIELD_PRIORITY.','. + ' creator.'.\SYSTEM\SQL\system_user::FIELD_ID.' as creator_id,'. + ' creator.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.','. + ' assignee.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' as assignee,'. + ' assignee.'.\SYSTEM\SQL\system_user::FIELD_ID.' as assignee_id'. + ' FROM '.\SYSTEM\SQL\system_todo::NAME_PG.' as todo'. + ' LEFT JOIN '.\SYSTEM\SQL\system_todo_assign::NAME_PG.' as assign ON todo."'.\SYSTEM\SQL\system_todo::FIELD_ID.'"=assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_TODO. + ' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_PG.' as creator ON todo.'.\SYSTEM\SQL\system_todo::FIELD_USER.'=creator.'.\SYSTEM\SQL\system_user::FIELD_ID. + ' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_PG.' as assignee ON assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.'=assignee.'.\SYSTEM\SQL\system_user::FIELD_ID. + ' WHERE todo.'.\SYSTEM\SQL\system_todo::FIELD_STATE.' = $1'. + ' AND assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.' = $2'. + ' AND (todo.'.\SYSTEM\SQL\system_todo::FIELD_MESSAGE.' LIKE $3 OR creator.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' LIKE $4 OR assignee.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' LIKE $5)'. +') as a'; + //' ORDER BY a.'.\SYSTEM\SQL\system_todo::FIELD_PRIORITY.' DESC, a.'.\SYSTEM\SQL\system_todo::FIELD_TYPE.' DESC, a.'.\SYSTEM\SQL\system_todo::FIELD_COUNT.' DESC, a.'.\SYSTEM\SQL\system_todo::FIELD_TIME.' DESC'; + //sorry postgres but ur rly bad! + } public static function mysql(){return 'SELECT * FROM('. ' SELECT todo.'.\SYSTEM\SQL\system_todo::FIELD_ID.' as todo_id,'. diff --git a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_LIST_OTHERS.php b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_LIST_OTHERS.php index 981bca5..8d1ce07 100644 --- a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_LIST_OTHERS.php +++ b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_LIST_OTHERS.php @@ -2,6 +2,26 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_TODO_LIST_OTHERS extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} + public static function pgsql(){return +'SELECT DISTINCT ON (todo_id) * FROM('. + ' SELECT todo."'.\SYSTEM\SQL\system_todo::FIELD_ID.'" as todo_id,'. + ' todo.'.\SYSTEM\SQL\system_todo::FIELD_TYPE.', todo.'.\SYSTEM\SQL\system_todo::FIELD_CLASS.', todo.'.\SYSTEM\SQL\system_todo::FIELD_TIME.', todo.'.\SYSTEM\SQL\system_todo::FIELD_COUNT.', todo.'.\SYSTEM\SQL\system_todo::FIELD_MESSAGE.', todo.'.\SYSTEM\SQL\system_todo::FIELD_REQUEST_URI.', todo.'.\SYSTEM\SQL\system_todo::FIELD_FILE.', todo.'.\SYSTEM\SQL\system_todo::FIELD_LINE.', todo.'.\SYSTEM\SQL\system_todo::FIELD_SERVER_NAME.', todo.'.\SYSTEM\SQL\system_todo::FIELD_SERVER_PORT.', todo.'.\SYSTEM\SQL\system_todo::FIELD_QUERYTIME.', todo.'.\SYSTEM\SQL\system_todo::FIELD_IP.', todo.'.\SYSTEM\SQL\system_todo::FIELD_PRIORITY.','. + ' creator.'.\SYSTEM\SQL\system_user::FIELD_ID.' as creator_id,'. + ' creator.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.','. + ' assignee.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' as assignee,'. + ' assignee.'.\SYSTEM\SQL\system_user::FIELD_ID.' as assignee_id'. + ' FROM '.\SYSTEM\SQL\system_todo::NAME_PG.' as todo'. + ' LEFT JOIN '.\SYSTEM\SQL\system_todo_assign::NAME_PG.' as assign ON todo."'.\SYSTEM\SQL\system_todo::FIELD_ID.'"=assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_TODO. + ' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_PG.' as creator ON todo.'.\SYSTEM\SQL\system_todo::FIELD_USER.'=creator.'.\SYSTEM\SQL\system_user::FIELD_ID. + ' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_PG.' as assignee ON assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.'=assignee.'.\SYSTEM\SQL\system_user::FIELD_ID. + ' WHERE todo.'.\SYSTEM\SQL\system_todo::FIELD_STATE.' = $1'. + ' AND NOT assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.' = $2'. + ' AND (todo.'.\SYSTEM\SQL\system_todo::FIELD_MESSAGE.' LIKE $3 OR creator.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' LIKE $4 OR assignee.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' LIKE $5)'. + ' ORDER BY case when assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.' = $6 then 1 else 2 end'. +') as a'; + //' ORDER BY a.'.\SYSTEM\SQL\system_todo::FIELD_PRIORITY.' DESC, a.'.\SYSTEM\SQL\system_todo::FIELD_TYPE.' DESC, a.'.\SYSTEM\SQL\system_todo::FIELD_COUNT.' DESC, a.'.\SYSTEM\SQL\system_todo::FIELD_TIME.' DESC'; + //sorry postgres but ur rly bad! + } public static function mysql(){return 'SELECT * FROM('. ' SELECT todo.'.\SYSTEM\SQL\system_todo::FIELD_ID.' as todo_id,'. diff --git a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_LIST_TYPE.php b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_LIST_TYPE.php index 307619c..59e258c 100644 --- a/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_LIST_TYPE.php +++ b/sai/modules/saimod_sys_todo/qq/SYS_SAIMOD_TODO_LIST_TYPE.php @@ -2,6 +2,26 @@ namespace SYSTEM\SQL; class SYS_SAIMOD_TODO_LIST_TYPE extends \SYSTEM\DB\QP { public static function get_class(){return \get_class();} + public static function pgsql(){return +'SELECT DISTINCT ON (todo_id) * FROM('. + ' SELECT todo."'.\SYSTEM\SQL\system_todo::FIELD_ID.'" as todo_id,'. + ' todo.'.\SYSTEM\SQL\system_todo::FIELD_TYPE.', todo.'.\SYSTEM\SQL\system_todo::FIELD_CLASS.', todo.'.\SYSTEM\SQL\system_todo::FIELD_TIME.', todo.'.\SYSTEM\SQL\system_todo::FIELD_COUNT.', todo.'.\SYSTEM\SQL\system_todo::FIELD_MESSAGE.', todo.'.\SYSTEM\SQL\system_todo::FIELD_REQUEST_URI.', todo.'.\SYSTEM\SQL\system_todo::FIELD_FILE.', todo.'.\SYSTEM\SQL\system_todo::FIELD_LINE.', todo.'.\SYSTEM\SQL\system_todo::FIELD_SERVER_NAME.', todo.'.\SYSTEM\SQL\system_todo::FIELD_SERVER_PORT.', todo.'.\SYSTEM\SQL\system_todo::FIELD_QUERYTIME.', todo.'.\SYSTEM\SQL\system_todo::FIELD_IP.', todo.'.\SYSTEM\SQL\system_todo::FIELD_PRIORITY.','. + ' creator.'.\SYSTEM\SQL\system_user::FIELD_ID.' as creator_id,'. + ' creator.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.','. + ' assignee.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' as assignee,'. + ' assignee.'.\SYSTEM\SQL\system_user::FIELD_ID.' as assignee_id'. + ' FROM '.\SYSTEM\SQL\system_todo::NAME_PG.' as todo'. + ' LEFT JOIN '.\SYSTEM\SQL\system_todo_assign::NAME_PG.' as assign ON todo."'.\SYSTEM\SQL\system_todo::FIELD_ID.'"=assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_TODO. + ' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_PG.' as creator ON todo.'.\SYSTEM\SQL\system_todo::FIELD_USE.'=creator.'.\SYSTEM\SQL\system_user::FIELD_ID. + ' LEFT JOIN '.\SYSTEM\SQL\system_user::NAME_PG.' as assignee ON assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.'=assignee.'.\SYSTEM\SQL\system_user::FIELD_ID. + ' WHERE todo.'.\SYSTEM\SQL\system_todo::FIELD_STATE.' = $1'. + ' AND todo.'.\SYSTEM\SQL\system_todo::FIELD_TYPE.' = $2'. + ' AND (todo.'.\SYSTEM\SQL\system_todo::FIELD_MESSAGE.' LIKE $3 OR creator.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' LIKE $4 OR assignee.'.\SYSTEM\SQL\system_user::FIELD_USERNAME.' LIKE $5)'. + ' ORDER BY case when assign.'.\SYSTEM\SQL\system_todo_assign::FIELD_USER.' = $6 then 1 else 2 end'. +') as a'; + //' ORDER BY a.'.\SYSTEM\SQL\system_todo::FIELD_PRIORITY.' DESC, a.'.\SYSTEM\SQL\system_todo::FIELD_TYPE.' DESC, a.'.\SYSTEM\SQL\system_todo::FIELD_COUNT.' DESC, a.'.\SYSTEM\SQL\system_todo::FIELD_TIME.' DESC'; + //sorry postgres but ur rly bad! + } public static function mysql(){return 'SELECT * FROM('. ' SELECT todo.'.\SYSTEM\SQL\system_todo::FIELD_ID.' as todo_id,'.