| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,11 +1,14 @@ | |||
| 1 | 1 | import { IAdminForthDataSourceConnector, IAdminForthSingleFilter, IAdminForthAndOrFilter, AdminForthResource, AdminForthResourceColumn, IAggregationRule, IGroupByRule, IGroupByDateTrunc, IGroupByField } from '../types/Back.js'; | |
| 2 | 2 | import AdminForthBaseConnector from './baseConnector.js'; | |
| 3 | 3 | import dayjs from 'dayjs'; | |
| 4 | + import utc from 'dayjs/plugin/utc.js'; | ||
| 4 | 5 | import { createClient } from '@clickhouse/client' | |
| 5 | 6 | ||
| 6 | 7 | import { AdminForthDataTypes, AdminForthFilterOperators, AdminForthSortDirections } from '../types/Common.js'; | |
| 7 | 8 | import { afLogger } from '../modules/logger.js'; | |
| 8 | 9 | ||
| 10 | + dayjs.extend(utc); | ||
| 11 | + | ||
| 9 | 12 | class ClickhouseConnector extends AdminForthBaseConnector implements IAdminForthDataSourceConnector { | |
| 10 | 13 | ||
| 11 | 14 | dbName: string; | |
@@ -194,8 +197,8 @@ class ClickhouseConnector extends AdminForthBaseConnector implements IAdminForth | |||
| 194 | 197 | || field._underlineType.startsWith('FixedString') | |
| 195 | 198 | || field._underlineType.startsWith('Nullable(String)') | |
| 196 | 199 | || field._underlineType.startsWith('Nullable(FixedString)')) { | |
| 197 | - // value is iso string now, convert to unix timestamp | ||
| 198 | - const iso = dayjs(value).format('YYYY-MM-DDTHH:mm:ss'); | ||
| 200 | + // ClickHouse DateTime has no offset in the literal, so keep ISO instants in UTC. | ||
| 201 | + const iso = dayjs.utc(value).format('YYYY-MM-DDTHH:mm:ss'); | ||
| 199 | 202 | return iso; | |
| 200 | 203 | } | |
| 201 | 204 | } else if (field.type == AdminForthDataTypes.BOOLEAN) { | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,10 +1,13 @@ | |||
| 1 | 1 | import dayjs from 'dayjs'; | |
| 2 | + import utc from 'dayjs/plugin/utc.js'; | ||
| 2 | 3 | import { AdminForthResource, IAdminForthSingleFilter, IAdminForthAndOrFilter, IAdminForthDataSourceConnector, AdminForthConfig, IAggregationRule, IGroupByRule, IGroupByDateTrunc, IGroupByField } from '../types/Back.js'; | |
| 3 | 4 | import { AdminForthDataTypes, AdminForthFilterOperators, AdminForthSortDirections, } from '../types/Common.js'; | |
| 4 | 5 | import AdminForthBaseConnector from './baseConnector.js'; | |
| 5 | 6 | import mysql from 'mysql2/promise'; | |
| 6 | 7 | import { dbLogger, afLogger } from '../modules/logger.js'; | |
| 7 | 8 | ||
| 9 | + dayjs.extend(utc); | ||
| 10 | + | ||
| 8 | 11 | class MysqlConnector extends AdminForthBaseConnector implements IAdminForthDataSourceConnector { | |
| 9 | 12 | ||
| 10 | 13 | async setupClient(url): Promise<void> { | |
@@ -223,7 +226,7 @@ class MysqlConnector extends AdminForthBaseConnector implements IAdminForthDataS | |||
| 223 | 226 | if (!value) { | |
| 224 | 227 | return null; | |
| 225 | 228 | } | |
| 226 | - return dayjs(value).format('YYYY-MM-DD HH:mm:ss'); | ||
| 229 | + return dayjs.utc(value).format('YYYY-MM-DD HH:mm:ss'); | ||
| 227 | 230 | } else if (field.type == AdminForthDataTypes.BOOLEAN) { | |
| 228 | 231 | return value === null ? null : (value ? 1 : 0); | |
| 229 | 232 | } else if (field.type == AdminForthDataTypes.JSON) { | |
| Back | FazBrowse Home | New Git URL |
0 commit comments