ts-sql-query
Version:
Type-safe SQL query builder like QueryDSL or JOOQ in Java or Linq in .Net for TypeScript with MariaDB, MySql, Oracle, PostgreSql, Sqlite and SqlServer support.
59 lines (58 loc) • 2.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AbstractPostgreSqlConnection = void 0;
const AbstractAdvancedConnection_1 = require("./AbstractAdvancedConnection");
class AbstractPostgreSqlConnection extends AbstractAdvancedConnection_1.AbstractAdvancedConnection {
constructor(queryRunner, sqlBuilder) {
super(queryRunner, sqlBuilder);
queryRunner.useDatabase('postgreSql');
}
transformPlaceholder(placeholder, type, forceTypeCast, valueSentToDB) {
if (!forceTypeCast) {
return super.transformPlaceholder(placeholder, type, forceTypeCast, valueSentToDB);
}
switch (type) {
case 'boolean':
return placeholder + '::bool';
case 'int':
return placeholder + '::int4';
case 'bigint':
return placeholder + '::int8';
case 'stringInt':
return placeholder + '::int8';
case 'double':
return placeholder + '::float8';
case 'stringDouble':
return placeholder + '::float8';
case 'string':
return placeholder + '::text';
case 'uuid':
return placeholder + '::uuid';
case 'localDate':
return placeholder + '::date';
case 'localTime':
return placeholder + '::timestamp::time';
case 'localDateTime':
return placeholder + '::timestamp';
}
if (typeof valueSentToDB === 'bigint') {
return placeholder + '::int8';
}
if (typeof valueSentToDB === 'number') {
if (Number.isInteger(valueSentToDB)) {
if (valueSentToDB >= -2147483648 && valueSentToDB <= 2147483647) {
// Int32 number
return placeholder + '::int4';
}
else {
return placeholder + '::int8';
}
}
else {
return placeholder + '::float8';
}
}
return placeholder;
}
}
exports.AbstractPostgreSqlConnection = AbstractPostgreSqlConnection;