New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

orm

Package Overview
Dependencies
Maintainers
2
Versions
103
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

orm - npm Package Compare versions

Comparing version 2.1.13 to 2.1.14

after-load.patch

4

Changelog.md

@@ -0,1 +1,5 @@

### v2.1.14 - 22 May 2014
- Allow explicitly specifying `key: true` on properties rather than passing in an array of ids.
- Fix Property.mapsTo (#506)
### v2.1.13 - 21 May 2014

@@ -2,0 +6,0 @@ - Dont modify array passed to execQuery

6

lib/AggregateFunctions.js

@@ -58,5 +58,5 @@ var ORMError = require("./Error");

if (Array.isArray(arguments[0])) {
opts.properties = opts.properties.concat(arguments[0]);
opts.propertyList = opts.propertyList.concat(arguments[0]);
} else {
opts.properties = opts.properties.concat(Array.prototype.slice.apply(arguments));
opts.propertyList = opts.propertyList.concat(Array.prototype.slice.apply(arguments));
}

@@ -101,3 +101,3 @@ return this;

var query = opts.driver.getQuery().select().from(opts.table).select(opts.properties);
var query = opts.driver.getQuery().select().from(opts.table).select(opts.propertyList);
var i, j;

@@ -104,0 +104,0 @@

@@ -11,3 +11,3 @@ var _ = require("lodash");

Model.hasMany = function () {
var name;
var name, makeKey, mergeId, mergeAssocId;
var OtherModel = Model;

@@ -45,2 +45,16 @@ var props = null;

makeKey = opts.key || Settings.defaults().hasMany.key;
mergeId = util.convertPropToJoinKeyProp(
util.wrapFieldObject(opts.mergeId, OtherModel, Model.table, OtherModel.properties) ||
util.formatField(OtherModel, Model.table, true, opts.reversed),
{ makeKey: makeKey, required: true }
);
mergeAssocId = util.convertPropToJoinKeyProp(
util.wrapFieldObject(opts.mergeAssocId, Model, name, Model.properties) ||
util.formatField(Model, name, true, opts.reversed),
{ makeKey: makeKey, required: true }
)
var assocName = opts.name || ucfirst(name);

@@ -58,4 +72,4 @@ var assocTemplateName = opts.accessor || assocName;

mergeTable : opts.mergeTable || (Model.table + "_" + name),
mergeId : util.wrapFieldObject(opts.mergeId, OtherModel, Model.table, OtherModel.properties) || util.formatField(OtherModel, Model.table, true, opts.reversed),
mergeAssocId : util.wrapFieldObject(opts.mergeAssocId, Model, name, Model.properties) || util.formatField(Model, name, true, opts.reversed),
mergeId : mergeId,
mergeAssocId : mergeAssocId,
getAccessor : opts.getAccessor || ("get" + assocTemplateName),

@@ -62,0 +76,0 @@ setAccessor : opts.setAccessor || ("set" + assocTemplateName),

@@ -44,2 +44,3 @@ var _ = require("lodash");

}
util.convertPropToJoinKeyProp(association.field, { makeKey: false, required: false });
for (var k in Accessors) {

@@ -46,0 +47,0 @@ if (!association.hasOwnProperty(k + "Accessor")) {

var _ = require("lodash");
var Utilities = require("./Utilities");
var ChainInstance = require("./ChainInstance");

@@ -48,3 +49,3 @@ var Promise = require("./Promise").Promise;

}
this.only(_.difference(Object.keys(Model.allProperties), omit));
this.only(_.difference(Object.keys(opts.properties), omit));
return this;

@@ -174,5 +175,14 @@ },

all: function (cb) {
opts.driver.find(opts.only, opts.table, opts.conditions, {
var order, conditions;
conditions = Utilities.transformPropertyNames(
opts.conditions, opts.properties
);
order = Utilities.transformOrderPropertyNames(
opts.order, opts.properties
);
opts.driver.find(opts.only, opts.table, conditions, {
limit : opts.limit,
order : opts.order,
order : order,
merge : opts.merge,

@@ -179,0 +189,0 @@ offset : opts.offset,

@@ -267,3 +267,6 @@ var Utilities = require("../../Utilities");

options.order[0] = options.order[0][1];
options.order = Utilities.standardizeOrder(options.order);
options.order = Utilities.transformOrderPropertyNames(
Utilities.standardizeOrder(options.order),
Model.allProperties
);
}

@@ -270,0 +273,0 @@

@@ -1,4 +0,5 @@

var Property = require("./Property");
var Hook = require("./Hook");
var enforce = require("enforce");
var Utilities = require("./Utilities");
var Property = require("./Property");
var Hook = require("./Hook");
var enforce = require("enforce");

@@ -159,5 +160,5 @@ exports.Instance = Instance;

if (opts.driver.propertyToValue) {
data[prop.mapsTo] = opts.driver.propertyToValue(opts.data[k], prop);
data[k] = opts.driver.propertyToValue(opts.data[k], prop);
} else {
data[prop.mapsTo] = opts.data[k];
data[k] = opts.data[k];
}

@@ -195,2 +196,4 @@ } else {

data = Utilities.transformPropertyNames(data, Model.allProperties);
opts.driver.insert(opts.table, data, opts.id, function (save_err, info) {

@@ -253,2 +256,4 @@ if (save_err) {

}
changes = Utilities.transformPropertyNames(changes, Model.allProperties);
opts.driver.update(opts.table, changes, conditions, function (err) {

@@ -255,0 +260,0 @@ if (err) {

@@ -0,1 +1,2 @@

var _ = require("lodash");
var ChainFind = require("./ChainFind");

@@ -25,8 +26,7 @@ var Instance = require("./Instance").Instance;

function Model(opts) {
opts = opts || {};
opts = _.defaults(opts || {}, {
id: []
});
opts.id = Array.isArray(opts.id) ? opts.id : [opts.id];
if (!Array.isArray(opts.id)) {
opts.id = [ opts.id ];
}
var one_associations = [];

@@ -114,3 +114,4 @@ var many_associations = [];

association_properties : association_properties,
setupAssociations : setupAssociations
setupAssociations : setupAssociations,
fieldToPropertyMap : fieldToPropertyMap
});

@@ -148,14 +149,2 @@ instance.on("ready", function (err) {

var mapDatastoreFieldsToProperties = function (dataIn) {
var k, prop;
var dataOut = {};
for (k in dataIn) {
prop = fieldToPropertyMap[k];
if (!prop) dataOut[k] = dataIn[k];
else dataOut[prop.name] = dataIn[k];
}
return dataOut;
}
var model = function () {

@@ -305,3 +294,3 @@ var instance, i;

data = mapDatastoreFieldsToProperties(data[0]);
Utilities.renameDatastoreFieldsToPropertyNames(data[0], fieldToPropertyMap);

@@ -314,3 +303,3 @@ var uid = opts.driver.uid + "/" + opts.table + "/" + ids.join("/");

}, function (cb) {
return createInstance(data, {
return createInstance(data[0], {
uid : uid,

@@ -407,2 +396,3 @@ autoSave : options.autoSave,

offset : options.offset,
properties : allProperties,
newInstance : function (data, cb) {

@@ -414,2 +404,4 @@ var uid = opts.driver.uid + "/" + opts.table + (merge ? "+" + merge.from.table : "");

Utilities.renameDatastoreFieldsToPropertyNames(data, fieldToPropertyMap);
Singleton.get(uid, {

@@ -505,3 +497,3 @@ cache : options.cache,

var conditions = {};
var properties = [];
var propertyList = [];

@@ -511,3 +503,3 @@ for (var i = 0; i < arguments.length; i++) {

if (Array.isArray(arguments[i])) {
properties = arguments[i];
propertyList = arguments[i];
} else {

@@ -524,7 +516,8 @@ conditions = arguments[i];

return new require("./AggregateFunctions")({
table : opts.table,
driver_name : opts.driver_name,
driver : opts.driver,
conditions : conditions,
properties : properties
table : opts.table,
driver_name : opts.driver_name,
driver : opts.driver,
conditions : conditions,
propertyList : propertyList,
properties : allProperties
});

@@ -658,4 +651,14 @@ };

var currFields = {}, cType;
var currFields = {}, cType, name;
// If no keys are defined add the default one
if (opts.id.length == 0 && !_.any(opts.properties, { key: true })) {
name = opts.settings.get("properties.primary_key");
opts.properties[name] = Property.normalize({
prop: { type: 'serial', key: true, required: false, klass: 'key' },
name: name, customTypes: opts.db.customTypes, settings: opts.settings
});
}
// standardize properties

@@ -673,3 +676,6 @@ for (k in opts.properties) {

prop.key = true;
} else if (prop.key) {
opts.id.push(k);
}
if (prop.lazyload !== true && !currFields[k]) {

@@ -695,12 +701,2 @@ currFields[k] = true;

for (var i = 0; i < opts.id.length; i++) {
k = opts.id[i];
allProperties[k] = opts.properties[k] || Property.normalize({
prop: { type: 'serial', key: true, klass: 'key' },
name: k, customTypes: opts.db.customTypes, settings: opts.settings
});
fieldToPropertyMap[allProperties[k].mapsTo] = allProperties[k];
}
model_fields = opts.id.concat(model_fields);
// setup hooks

@@ -707,0 +703,0 @@ for (k in AvailableHooks) {

@@ -229,3 +229,3 @@ var util = require("util");

cache : opts.hasOwnProperty("cache") ? opts.cache : this.settings.get("instance.cache"),
id : opts.id || this.settings.get("properties.primary_key"),
id : opts.id,// || this.settings.get("properties.primary_key"),
autoSave : opts.hasOwnProperty("autoSave") ? opts.autoSave : this.settings.get("instance.autoSave"),

@@ -232,0 +232,0 @@ autoFetch : opts.hasOwnProperty("autoFetch") ? opts.autoFetch : this.settings.get("instance.autoFetch"),

@@ -17,2 +17,6 @@ var _ = require('lodash');

},
hasMany : {
// Makes the foreign key fields a composite key
key : false
},
connection : {

@@ -19,0 +23,0 @@ reconnect : true,

@@ -237,2 +237,25 @@ _ = require('lodash')

// If the parent associations key is `serial`, the join tables
// key should be changed to `integer`.
exports.convertPropToJoinKeyProp = function (props, opts) {
var prop;
for (var k in props) {
prop = props[k];
prop.required = opts.required;
if (prop.type == 'serial') {
prop.type = 'integer';
}
if (opts.makeKey) {
prop.key = true;
} else {
delete prop.key;
}
}
return props;
}
exports.getRealPath = function (path_str, stack_index) {

@@ -261,1 +284,54 @@ var path = require("path"); // for now, load here (only when needed)

};
exports.transformPropertyNames = function (dataIn, properties) {
var k, prop;
var dataOut = {};
for (k in dataIn) {
prop = properties[k];
if (prop) {
dataOut[prop.mapsTo] = dataIn[k];
} else {
dataOut[k] = dataIn[k];
}
}
return dataOut;
};
exports.transformOrderPropertyNames = function (order, properties) {
if (!order) return order;
var i, item;
var newOrder = JSON.parse(JSON.stringify(order));
// Rename order properties according to mapsTo
for (var i = 0; i < newOrder.length; i++) {
item = newOrder[i];
// orderRaw
if (Array.isArray(item[1])) continue;
if (Array.isArray(item[0])) {
// order on a hasMany
// [ ['modelName', 'propName'], 'Z']
item[0][1] = properties[item[0][1]].mapsTo;
} else {
// normal order
item[0] = properties[item[0]].mapsTo;
}
}
return newOrder;
}
exports.renameDatastoreFieldsToPropertyNames = function (data, fieldToPropertyMap) {
var k, prop;
for (k in data) {
prop = fieldToPropertyMap[k];
if (prop && prop.name != k) {
data[prop.name] = data[k];
delete data[k];
}
}
return data;
}

@@ -15,3 +15,3 @@ {

],
"version" : "2.1.13",
"version" : "2.1.14",
"license" : "MIT",

@@ -41,4 +41,4 @@ "homepage" : "http://dresende.github.io/node-orm2",

"enforce" : "0.1.2",
"sql-query" : "git://github.com/dresende/node-sql-query.git#v0.1.20",
"sql-ddl-sync" : "git://github.com/dresende/node-sql-ddl-sync.git#v0.3.6",
"sql-query" : "git+https://github.com/dresende/node-sql-query.git#v0.1.21",
"sql-ddl-sync" : "git+https://github.com/dresende/node-sql-ddl-sync.git#v0.3.6",
"hat" : "0.0.3",

@@ -45,0 +45,0 @@ "lodash" : "2.4.1"

@@ -235,13 +235,12 @@ ## Object Relational Mapping

For example, each Model instance has a unique ID in the database. This table column is
by default "id" but you can change it.
For example, each Model instance has a unique ID in the database. This table column is added automatically, and called "id" by default.<br/>
If you define your own `key: true` column, "id" will not be added:
```js
var Person = db.define("person", {
name : String
}, {
id : "person_id"
personId : { type: 'serial', key: true },
name : String
});
// or just do it globally..
// You can also change the default "id" property name globally:
db.settings.set("properties.primary_key", "UID");

@@ -257,10 +256,8 @@

It is also possible to have multiple IDs for a model in the database, this is done by specifying an array of IDs to use.
It's also possible to have composite keys:
```js
var Person = db.define("person", {
firstname: String,
lastname: String
}, {
id: ['firstname', 'lastname']
firstname : { type: 'string', key: true },
lastname : { type: 'string', key: true }
});

@@ -267,0 +264,0 @@ ```

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc