mirror of
https://github.com/Fabio286/antares.git
synced 2025-02-18 12:40:41 +01:00
feat(PostgreSQL): support to microseconds
This commit is contained in:
parent
ffb1712a59
commit
d465e18dba
@ -1,9 +1,19 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
import { Pool, Client, types } from 'pg';
|
import pg, { Pool, Client, types } from 'pg';
|
||||||
import { Parser } from 'node-sql-parser';
|
import { Parser } from 'node-sql-parser';
|
||||||
import { AntaresCore } from '../AntaresCore';
|
import { AntaresCore } from '../AntaresCore';
|
||||||
import dataTypes from 'common/data-types/postgresql';
|
import dataTypes from 'common/data-types/postgresql';
|
||||||
|
|
||||||
|
function pgToString (value) {
|
||||||
|
return value.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
pg.types.setTypeParser(1082, pgToString); // date
|
||||||
|
pg.types.setTypeParser(1083, pgToString); // time
|
||||||
|
pg.types.setTypeParser(1114, pgToString); // timestamp
|
||||||
|
pg.types.setTypeParser(1184, pgToString); // timestamptz
|
||||||
|
pg.types.setTypeParser(1266, pgToString); // timetz
|
||||||
|
|
||||||
export class PostgreSQLClient extends AntaresCore {
|
export class PostgreSQLClient extends AntaresCore {
|
||||||
constructor (args) {
|
constructor (args) {
|
||||||
super(args);
|
super(args);
|
||||||
@ -1247,8 +1257,7 @@ export class PostgreSQLClient extends AntaresCore {
|
|||||||
table: ast && ast.from ? ast.from[0].table : null,
|
table: ast && ast.from ? ast.from[0].table : null,
|
||||||
tableAlias: ast && ast.from ? ast.from[0].as : null,
|
tableAlias: ast && ast.from ? ast.from[0].as : null,
|
||||||
orgTable: ast && ast.from ? ast.from[0].table : null,
|
orgTable: ast && ast.from ? ast.from[0].table : null,
|
||||||
type: this.types[field.dataTypeID],
|
type: this.types[field.dataTypeID]
|
||||||
length: null// type.length
|
|
||||||
};
|
};
|
||||||
}).filter(Boolean)
|
}).filter(Boolean)
|
||||||
: [];
|
: [];
|
||||||
@ -1276,7 +1285,11 @@ export class PostgreSQLClient extends AntaresCore {
|
|||||||
const detailedField = columns.find(f => f.name === field.name);
|
const detailedField = columns.find(f => f.name === field.name);
|
||||||
const fieldIndex = indexes.find(i => i.column === field.name);
|
const fieldIndex = indexes.find(i => i.column === field.name);
|
||||||
if (field.table === paramObj.table && field.schema === paramObj.schema) {
|
if (field.table === paramObj.table && field.schema === paramObj.schema) {
|
||||||
if (detailedField) field = { ...field, ...detailedField };
|
if (detailedField) {
|
||||||
|
const length = detailedField.numPrecision || detailedField.charLength || detailedField.datePrecision || null;
|
||||||
|
field = { ...field, ...detailedField, length };
|
||||||
|
}
|
||||||
|
|
||||||
if (fieldIndex) {
|
if (fieldIndex) {
|
||||||
const key = fieldIndex.type === 'PRIMARY' ? 'pri' : fieldIndex.type === 'UNIQUE' ? 'uni' : 'mul';
|
const key = fieldIndex.type === 'PRIMARY' ? 'pri' : fieldIndex.type === 'UNIQUE' ? 'uni' : 'mul';
|
||||||
field = { ...field, key };
|
field = { ...field, key };
|
||||||
|
@ -213,6 +213,9 @@ export default {
|
|||||||
return moment(val).isValid() ? moment(val).format('YYYY-MM-DD') : val;
|
return moment(val).isValid() ? moment(val).format('YYYY-MM-DD') : val;
|
||||||
|
|
||||||
if (DATETIME.includes(type)) {
|
if (DATETIME.includes(type)) {
|
||||||
|
if (typeof val === 'string')
|
||||||
|
return val;
|
||||||
|
|
||||||
let datePrecision = '';
|
let datePrecision = '';
|
||||||
for (let i = 0; i < precision; i++)
|
for (let i = 0; i < precision; i++)
|
||||||
datePrecision += i === 0 ? '.S' : 'S';
|
datePrecision += i === 0 ? '.S' : 'S';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user