()
| 152 | |
| 153 | |
| 154 | var model = function () { |
| 155 | var instance, i; |
| 156 | |
| 157 | var data = arguments.length > 1 ? arguments : arguments[0]; |
| 158 | |
| 159 | if (Array.isArray(opts.keys) && Array.isArray(data)) { |
| 160 | if (data.length == opts.keys.length) { |
| 161 | var data2 = {}; |
| 162 | for (i = 0; i < opts.keys.length; i++) { |
| 163 | data2[opts.keys[i]] = data[i++]; |
| 164 | } |
| 165 | |
| 166 | return createInstance(data2, { isShell: true }); |
| 167 | } |
| 168 | else { |
| 169 | var err = new Error('Model requires ' + opts.keys.length + ' keys, only ' + data.length + ' were provided'); |
| 170 | err.model = opts.table; |
| 171 | |
| 172 | throw err; |
| 173 | } |
| 174 | } |
| 175 | else if (typeof data === "number" || typeof data === "string") { |
| 176 | var data2 = {}; |
| 177 | data2[opts.keys[0]] = data; |
| 178 | |
| 179 | return createInstance(data2, { isShell: true }); |
| 180 | } else if (typeof data === "undefined") { |
| 181 | data = {}; |
| 182 | } |
| 183 | |
| 184 | var isNew = false; |
| 185 | |
| 186 | for (i = 0; i < opts.keys.length; i++) { |
| 187 | if (!data.hasOwnProperty(opts.keys[i])) { |
| 188 | isNew = true; |
| 189 | break; |
| 190 | } |
| 191 | } |
| 192 | |
| 193 | if (keyProperties.length != 1 || (keyProperties.length == 1 && keyProperties[0].type != 'serial')) { |
| 194 | isNew = true; |
| 195 | } |
| 196 | |
| 197 | return createInstance(data, { |
| 198 | is_new: isNew, |
| 199 | autoSave: opts.autoSave, |
| 200 | cascadeRemove: opts.cascadeRemove |
| 201 | }); |
| 202 | }; |
| 203 | |
| 204 | model.allProperties = allProperties; |
| 205 | model.properties = opts.properties; |
nothing calls this directly
no test coverage detected