cormo
Advanced tools
Comparing version 0.18.2 to 0.19.0
@@ -59,2 +59,4 @@ "use strict"; | ||
return 'INT(11)'; | ||
case types.BigInteger: | ||
return 'BIGINT(20)'; | ||
case types.GeoPoint: | ||
@@ -126,3 +128,3 @@ return 'POINT'; | ||
/** @internal */ | ||
this.key_type = types.Integer; | ||
this.key_type = types.BigInteger; | ||
/** @internal */ | ||
@@ -175,3 +177,3 @@ this.support_geopoint = true; | ||
if (property.primary_key) { | ||
column_sqls.push(`\`${property._dbname_us}\` INT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY`); | ||
column_sqls.push(`\`${property._dbname_us}\` BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY`); | ||
} | ||
@@ -903,9 +905,11 @@ else { | ||
? new types.Integer() | ||
: /^point/i.test(column.Type) | ||
? new types.GeoPoint() | ||
: /^datetime/i.test(column.Type) | ||
? new types.Date() | ||
: /^text/i.test(column.Type) | ||
? new types.Text() | ||
: undefined; | ||
: /^bigint/i.test(column.Type) | ||
? new types.BigInteger() | ||
: /^point/i.test(column.Type) | ||
? new types.GeoPoint() | ||
: /^datetime/i.test(column.Type) | ||
? new types.Date() | ||
: /^text/i.test(column.Type) | ||
? new types.Text() | ||
: undefined; | ||
schema.columns[column.Field] = { | ||
@@ -912,0 +916,0 @@ required: column.Null === 'NO', |
@@ -59,2 +59,4 @@ "use strict"; | ||
return 'INTEGER'; | ||
case types.BigInteger: | ||
return 'BIGINT'; | ||
case types.GeoPoint: | ||
@@ -560,2 +562,5 @@ return 'GEOMETRY(POINT)'; | ||
valueToModel(value, property) { | ||
if (property.type_class === types.BigInteger) { | ||
return Number(value); | ||
} | ||
return value; | ||
@@ -629,11 +634,13 @@ } | ||
? new types.Integer() | ||
: column.data_type === 'USER-DEFINED' && column.udt_schema === 'public' && column.udt_name === 'geometry' | ||
? new types.GeoPoint() | ||
: column.data_type === 'timestamp without time zone' | ||
? new types.Date() | ||
: column.data_type === 'json' | ||
? new types.Object() | ||
: column.data_type === 'text' | ||
? new types.Text() | ||
: undefined; | ||
: column.data_type === 'bigint' | ||
? new types.BigInteger() | ||
: column.data_type === 'USER-DEFINED' && column.udt_schema === 'public' && column.udt_name === 'geometry' | ||
? new types.GeoPoint() | ||
: column.data_type === 'timestamp without time zone' | ||
? new types.Date() | ||
: column.data_type === 'json' | ||
? new types.Object() | ||
: column.data_type === 'text' | ||
? new types.Text() | ||
: undefined; | ||
let adapter_type_string = column.data_type.toUpperCase(); | ||
@@ -640,0 +647,0 @@ if (column.data_type === 'character varying') { |
@@ -116,2 +116,8 @@ "use strict"; | ||
} | ||
else if (property_type_class === types.BigInteger) { | ||
value = Number(value); | ||
if (isNaN(value) || !Number.isSafeInteger(value)) { | ||
value = -9007199254740991; | ||
} | ||
} | ||
return value; | ||
@@ -118,0 +124,0 @@ } |
@@ -53,2 +53,4 @@ "use strict"; | ||
return 'INTEGER'; | ||
case types.BigInteger: | ||
return 'BIGINT'; | ||
case types.Date: | ||
@@ -595,7 +597,9 @@ return 'REAL'; | ||
? new types.Integer() | ||
: /^real/i.test(column.type) | ||
? new types.Date() | ||
: /^text/i.test(column.type) | ||
? new types.Text() | ||
: undefined; | ||
: /^bigint/i.test(column.type) | ||
? new types.BigInteger() | ||
: /^real/i.test(column.type) | ||
? new types.Date() | ||
: /^text/i.test(column.type) | ||
? new types.Text() | ||
: undefined; | ||
schema.columns[column.name] = { | ||
@@ -602,0 +606,0 @@ required: column.notnull === 1, |
@@ -628,3 +628,5 @@ "use strict"; | ||
if (for_update) { | ||
if (property.type_class === types.Number || property.type_class === types.Integer) { | ||
if (property.type_class === types.Number || | ||
property.type_class === types.Integer || | ||
property.type_class === types.BigInteger) { | ||
obj[last] = { $inc: this._validateType(column, property.type_class, value.$inc) }; | ||
@@ -719,2 +721,8 @@ } | ||
break; | ||
case types.BigInteger: | ||
value = Number(value); | ||
if (isNaN(value) || !Number.isSafeInteger(value)) { | ||
throw new Error(`'${column}' is not a big integer`); | ||
} | ||
break; | ||
case types.GeoPoint: | ||
@@ -721,0 +729,0 @@ if (!(Array.isArray(value) && value.length === 2)) { |
@@ -60,2 +60,15 @@ /** | ||
/** | ||
* Represents a 54bit(JS limit) integer, used in model schemas. | ||
* @namespace types | ||
* @class BigInteger | ||
*/ | ||
export interface CormoTypesBigInteger { | ||
_type: 'biginteger'; | ||
} | ||
interface CormoTypesBigIntegerConstructor { | ||
new (): CormoTypesBigInteger; | ||
(): CormoTypesBigInteger; | ||
} | ||
declare const CormoTypesBigInteger: CormoTypesBigIntegerConstructor; | ||
/** | ||
* Represents a two-dimensional point, used in model schemas. | ||
@@ -130,6 +143,6 @@ * | ||
declare const CormoTypesText: CormoTypesTextConstructor; | ||
export declare type ColumnTypeInternal = CormoTypesString | CormoTypesNumber | CormoTypesBoolean | CormoTypesDate | CormoTypesObject | CormoTypesInteger | CormoTypesGeoPoint | CormoTypesRecordID | CormoTypesText; | ||
export declare type ColumnTypeInternalConstructor = CormoTypesStringConstructor | CormoTypesNumberConstructor | CormoTypesBooleanConstructor | CormoTypesDateConstructor | CormoTypesObjectConstructor | CormoTypesIntegerConstructor | CormoTypesGeoPointConstructor | CormoTypesRecordIDConstructor | CormoTypesTextConstructor; | ||
export declare type ColumnTypeInternal = CormoTypesString | CormoTypesNumber | CormoTypesBoolean | CormoTypesDate | CormoTypesObject | CormoTypesInteger | CormoTypesBigInteger | CormoTypesGeoPoint | CormoTypesRecordID | CormoTypesText; | ||
export declare type ColumnTypeInternalConstructor = CormoTypesStringConstructor | CormoTypesNumberConstructor | CormoTypesBooleanConstructor | CormoTypesDateConstructor | CormoTypesObjectConstructor | CormoTypesIntegerConstructor | CormoTypesBigIntegerConstructor | CormoTypesGeoPointConstructor | CormoTypesRecordIDConstructor | CormoTypesTextConstructor; | ||
declare type ColumnTypeNativeConstructor = StringConstructor | NumberConstructor | BooleanConstructor | DateConstructor | ObjectConstructor; | ||
declare type ColumnTypeString = 'string' | 'number' | 'boolean' | 'date' | 'object' | 'integer' | 'geopoint' | 'recordid' | 'text'; | ||
declare type ColumnTypeString = 'string' | 'number' | 'boolean' | 'date' | 'object' | 'integer' | 'biginteger' | 'geopoint' | 'recordid' | 'text'; | ||
export declare type ColumnType = ColumnTypeInternal | ColumnTypeInternalConstructor | ColumnTypeNativeConstructor | ColumnTypeString; | ||
@@ -141,3 +154,3 @@ /** | ||
declare function _toCORMOType(type: ColumnType): ColumnTypeInternal; | ||
export { CormoTypesString as String, CormoTypesNumber as Number, CormoTypesBoolean as Boolean, CormoTypesInteger as Integer, CormoTypesGeoPoint as GeoPoint, CormoTypesDate as Date, CormoTypesObject as Object, CormoTypesRecordID as RecordID, CormoTypesText as Text, _toCORMOType, }; | ||
export { CormoTypesString as String, CormoTypesNumber as Number, CormoTypesBoolean as Boolean, CormoTypesInteger as Integer, CormoTypesBigInteger as BigInteger, CormoTypesGeoPoint as GeoPoint, CormoTypesDate as Date, CormoTypesObject as Object, CormoTypesRecordID as RecordID, CormoTypesText as Text, _toCORMOType, }; | ||
/** | ||
@@ -159,2 +172,7 @@ * A pseudo type represents a record's unique identifier. | ||
/** | ||
* A pseudo type represents an big integer | ||
* @namespace ptypes | ||
*/ | ||
export declare type BigInteger = number; | ||
/** | ||
* A pseudo type represents a two - dimensional point | ||
@@ -161,0 +179,0 @@ * @namespace ptypes |
@@ -8,3 +8,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports._toCORMOType = exports.Text = exports.RecordID = exports.Object = exports.Date = exports.GeoPoint = exports.Integer = exports.Boolean = exports.Number = exports.String = void 0; | ||
exports._toCORMOType = exports.Text = exports.RecordID = exports.Object = exports.Date = exports.GeoPoint = exports.BigInteger = exports.Integer = exports.Boolean = exports.Number = exports.String = void 0; | ||
const CormoTypesString = function (length) { | ||
@@ -39,2 +39,9 @@ if (!(this instanceof CormoTypesString)) { | ||
exports.Integer = CormoTypesInteger; | ||
const CormoTypesBigInteger = function () { | ||
if (!(this instanceof CormoTypesBigInteger)) { | ||
return new CormoTypesBigInteger(); | ||
} | ||
this.toString = () => 'biginteger'; | ||
}; | ||
exports.BigInteger = CormoTypesBigInteger; | ||
const CormoTypesGeoPoint = function () { | ||
@@ -94,2 +101,4 @@ if (!(this instanceof CormoTypesGeoPoint)) { | ||
return new CormoTypesInteger(); | ||
case 'biginteger': | ||
return new CormoTypesBigInteger(); | ||
case 'geopoint': | ||
@@ -96,0 +105,0 @@ return new CormoTypesGeoPoint(); |
{ | ||
"name": "cormo", | ||
"description": "ORM framework for Node.js", | ||
"version": "0.18.2", | ||
"version": "0.19.0", | ||
"keywords": [ | ||
@@ -70,3 +70,3 @@ "orm", | ||
}, | ||
"gitHead": "e6c76dd17a613291493cd1ce20c279afb91a44b1" | ||
"gitHead": "28294e6f6422375ff1986f723257033ba28050bf" | ||
} |
366082
9927