From fe3cb7def7f1835ecaa3883798d58cb180d458f4 Mon Sep 17 00:00:00 2001 From: gslack-app Date: Thu, 23 Apr 2020 16:29:44 +0700 Subject: [PATCH] Fix bugs when processing null date Format where condition for id column by type --- www/api.ts | 17 ++++++++++++++++- www/query-adapter.ts | 6 ++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/www/api.ts b/www/api.ts index 8c8bb59..f02b6ab 100644 --- a/www/api.ts +++ b/www/api.ts @@ -76,7 +76,7 @@ export class ApiServlet extends HttpServlet { if (id) { orderBy = null; - condition = `${this.queryAdapter.getIdByColumn(pk.column)} = ${pk.type == 'number' ? id : "'" + id + "'"}`; + condition = `${this.queryAdapter.getIdByColumn(pk.column)} = ${this.formatLiteral(pk.type, id)}`; } else { // Reserved words must be back-quoted if used as an identifier @@ -250,6 +250,21 @@ export class ApiServlet extends HttpServlet { return errors.length ? errors : null; } + protected formatLiteral(type: string, value: any): string { + switch (type) { + case 'number': + return value; + case 'date': + return `date '${value}'`; + case 'time': + return `timeofday '${value}'`; + case 'datetime': + return `datetime '${value}'`; + default: + return `'${value}'`; + } + } + protected getValidators(): any { let names = ['error', 'object', 'array', 'string', 'number', 'boolean', 'date', 'regexp', 'Null', 'Undefined', diff --git a/www/query-adapter.ts b/www/query-adapter.ts index 3c41ae2..6118f8f 100644 --- a/www/query-adapter.ts +++ b/www/query-adapter.ts @@ -132,8 +132,10 @@ export class QueryAdapter implements IQueryAdapter { switch (type) { case 'date': - let value = eval(`new ${col.v}`); - item[name] = pattern ? Utilities.formatDate(value, Session.getScriptTimeZone(), pattern) : value; + if (col.v) { + let value = eval(`new ${col.v}`); + item[name] = pattern ? Utilities.formatDate(value, Session.getScriptTimeZone(), pattern) : value; + } break; default: item[name] = col.v;