Skip to content

Commit 44d432b

Browse files
committed
Add explicit integer type
1 parent 5e6c480 commit 44d432b

File tree

11 files changed

+47
-26
lines changed

11 files changed

+47
-26
lines changed

Changelog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
### v2.2.0 - (to do, in future)
22
- Fixes error code spelling: `PARAM_MISSMATCH` -> `PARAM_MISMATCH`
33

4+
### v2.1.7 - 25 Apr 2014
5+
- Add explicit 'integer' type to avoid confusion.
6+
`type: 'number', rational: false` will auto convert to `type: 'integer'`.
7+
48
### v2.1.6 - 23 Apr 2014
59
- Add '.omit' to chain find - opposite of '.only'
610

Readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ Are defined directly on the model.
171171
```js
172172
var Person = db.define('person', {
173173
name : String,
174-
height : { type: 'number', rational: false }
174+
height : { type: 'integer' }
175175
});
176176
Person.tallerThan = function(height, callback) {
177177
this.find({ height: orm.gt(height) }, callback);

lib/Model.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -656,7 +656,7 @@ function Model(opts) {
656656
for (var i = 0; i < opts.id.length; i++) {
657657
k = opts.id[i];
658658
allProperties[k] = opts.properties[k] || {
659-
type: 'serial', rational: 'false', key: true, klass: 'key'
659+
type: 'serial', key: true, klass: 'key'
660660
};
661661
}
662662
model_fields = opts.id.concat(model_fields);

lib/Property.js

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
var ORMError = require("./Error");
22

3+
var KNOWN_TYPES = [
4+
"text", "number", "integer", "boolean", "date", "enum", "object",
5+
"binary", "point", "serial"
6+
]
7+
38
exports.normalize = function (prop, customTypes, Settings) {
49
if (typeof prop === "function") {
510
switch (prop.name) {
@@ -30,20 +35,24 @@ exports.normalize = function (prop, customTypes, Settings) {
3035
prop = { type: "enum", values: prop };
3136
}
3237

33-
if ([ "text", "number", "boolean", "date", "enum", "object", "binary", "point" ].indexOf(prop.type) === -1) {
34-
if (!(prop.type in customTypes)) {
35-
throw new ORMError("Unknown property type: " + prop.type, 'NO_SUPPORT');
36-
}
38+
if (KNOWN_TYPES.indexOf(prop.type) === -1 && !(prop.type in customTypes)) {
39+
throw new ORMError("Unknown property type: " + prop.type, 'NO_SUPPORT');
3740
}
3841

3942
if (!prop.hasOwnProperty("required") && Settings.get("properties.required")) {
4043
prop.required = true;
4144
}
4245

43-
if (prop.type == "number" && !prop.hasOwnProperty("rational")) {
46+
// Defaults to true. Rational means floating point here.
47+
if (prop.type == "number" && prop.rational === undefined) {
4448
prop.rational = true;
4549
}
4650

51+
if (prop.type == "number" && prop.rational === false) {
52+
prop.type = "integer";
53+
delete prop.rational;
54+
}
55+
4756
return prop;
4857
};
4958

lib/Utilities.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -200,9 +200,8 @@ exports.formatField = function (model, name, required, reversed) {
200200
var p = model.properties[keys[i]];
201201

202202
field_opts = {
203-
type : p.type || "number",
203+
type : p.type || "integer",
204204
size : p.size || 4,
205-
rational : p.rational || false,
206205
unsigned : p.unsigned || true,
207206
time : p.time || false,
208207
big : p.big || false,
@@ -211,9 +210,8 @@ exports.formatField = function (model, name, required, reversed) {
211210
};
212211
} else {
213212
field_opts = {
214-
type : "number",
213+
type : "integer",
215214
unsigned : true,
216-
rational : false,
217215
size : 4,
218216
required : required
219217
};

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"sqlite",
1313
"mongodb"
1414
],
15-
"version" : "2.1.6",
15+
"version" : "2.1.7",
1616
"license" : "MIT",
1717
"homepage" : "http://dresende.github.io/node-orm2",
1818
"repository" : "http://github.com/dresende/node-orm2.git",
@@ -38,7 +38,7 @@
3838
"dependencies": {
3939
"enforce" : "0.1.2",
4040
"sql-query" : "0.1.16",
41-
"sql-ddl-sync" : "git://github.com/dresende/node-sql-ddl-sync.git#v0.2.4",
41+
"sql-ddl-sync" : "git://github.com/dresende/node-sql-ddl-sync.git#v0.3.0",
4242
"hat" : "0.0.3",
4343
"lodash" : "2.4.1"
4444
},

test/integration/association-hasone.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ describe("hasOne", function() {
1919
db.settings.set('instance.cache', false);
2020
db.settings.set('instance.returnAllErrors', true);
2121
Tree = db.define("tree", { type: { type: 'text' } });
22-
Stalk = db.define("stalk", { length: { type: 'number', rational: false } });
22+
Stalk = db.define("stalk", { length: { type: 'integer' } });
2323
Leaf = db.define("leaf", {
24-
size: { type: 'number', rational: false }
24+
size: { type: 'integer' }
2525
}, {
2626
validations: opts.validations
2727
});

test/integration/instance.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ describe("Model instance", function() {
1414

1515
Person = db.define("person", {
1616
name : String,
17-
age : { type: 'number', rational: false, required: false },
18-
height : { type: 'number', rational: false, required: false },
19-
weight : { type: 'number', required: false }
17+
age : { type: 'integer', required: false },
18+
height : { type: 'integer', required: false },
19+
weight : { type: 'number', required: false }
2020
}, {
2121
cache: false,
2222
validations: {

test/integration/model-keys.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,9 @@ describe("Model keys option", function() {
5353

5454
before(function (done) {
5555
DoorAccessHistory = db.define("door_access_history", {
56-
year : { type: 'number', rational: false },
57-
month : { type: 'number', rational: false },
58-
day : { type: 'number', rational: false },
56+
year : { type: 'integer' },
57+
month : { type: 'integer' },
58+
day : { type: 'integer' },
5959
user : String,
6060
action : [ "in", "out" ]
6161
}, {

test/integration/property-number-size.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ if (protocol != "sqlite") {
3131
var setup = function () {
3232
return function (done) {
3333
NumberSize = db.define("number_size", {
34-
int2 : { type: 'number', size: 2, rational: false },
35-
int4 : { type: 'number', size: 4, rational: false },
36-
int8 : { type: 'number', size: 8, rational: false },
37-
float4 : { type: 'number', size: 4 },
38-
float8 : { type: 'number', size: 8 }
34+
int2 : { type: 'integer', size: 2 },
35+
int4 : { type: 'integer', size: 4 },
36+
int8 : { type: 'integer', size: 8 },
37+
float4 : { type: 'number', size: 4 },
38+
float8 : { type: 'number', size: 8 }
3939
});
4040

4141
return helper.dropSync(NumberSize, function () {

0 commit comments

Comments
 (0)