Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
public
/
sequelize
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
不要怂,就是干,撸起袖子干!
Commit 82719d59
authored
Nov 10, 2011
by
Sascha Depold
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
first steps for better private method scoping
1 parent
12fd2280
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
78 additions
and
64 deletions
lib/model-factory.js
lib/model.js
lib/model-factory.js
View file @
82719d5
...
@@ -115,12 +115,13 @@ ModelFactory.prototype.find = function(options) {
...
@@ -115,12 +115,13 @@ ModelFactory.prototype.find = function(options) {
}
}
ModelFactory
.
prototype
.
build
=
function
(
values
,
options
)
{
ModelFactory
.
prototype
.
build
=
function
(
values
,
options
)
{
var
instance
=
new
Model
(
values
,
Utils
.
_
.
extend
(
this
.
options
,
{
hasPrimaryKeys
:
this
.
hasPrimaryKeys
}))
var
instance
=
new
Model
(
values
,
Utils
.
_
.
extend
(
this
.
options
,
this
.
attributes
,
{
hasPrimaryKeys
:
this
.
hasPrimaryKeys
}))
,
self
=
this
,
self
=
this
options
=
options
||
{}
options
=
options
||
{}
instance
.
__definition
=
this
instance
.
__definition
=
this
//console.log(this.attributes)
Utils
.
_
.
map
(
this
.
attributes
,
function
(
definition
,
name
)
{
Utils
.
_
.
map
(
this
.
attributes
,
function
(
definition
,
name
)
{
if
(
typeof
instance
[
name
]
==
'undefined'
)
{
if
(
typeof
instance
[
name
]
==
'undefined'
)
{
var
value
=
null
var
value
=
null
...
@@ -129,7 +130,7 @@ ModelFactory.prototype.build = function(values, options) {
...
@@ -129,7 +130,7 @@ ModelFactory.prototype.build = function(values, options) {
value
=
self
.
rawAttributes
[
name
].
defaultValue
value
=
self
.
rawAttributes
[
name
].
defaultValue
instance
[
name
]
=
value
instance
[
name
]
=
value
instance
.
addAttribute
(
name
,
value
)
instance
.
__
addAttribute
(
name
,
value
)
}
}
})
})
Utils
.
_
.
each
(
this
.
options
.
instanceMethods
||
{},
function
(
fct
,
name
)
{
instance
[
name
]
=
fct
})
Utils
.
_
.
each
(
this
.
options
.
instanceMethods
||
{},
function
(
fct
,
name
)
{
instance
[
name
]
=
fct
})
...
...
lib/model.js
View file @
82719d5
var
Utils
=
require
(
"./utils"
)
var
Utils
=
require
(
"./utils"
)
,
Mixin
=
require
(
"./associations/mixin"
)
,
Mixin
=
require
(
"./associations/mixin"
)
var
Model
=
module
.
exports
=
function
(
values
,
options
)
{
module
.
exports
=
(
function
()
{
var
Model
=
function
(
values
,
options
)
{
var
self
=
this
var
self
=
this
this
.
__definition
=
null
// will be set in Model.build
this
.
__definition
=
null
// will be set in Model.build
this
.
attributes
=
[]
this
.
attributes
=
[]
this
.
__options
=
options
||
{}
this
.
__options
=
options
||
{}
// add all passed values to the model and store the attribute names in this.attributes
initAttributes
.
call
(
this
,
values
)
Utils
.
_
.
map
(
values
,
function
(
value
,
key
)
{
self
.
addAttribute
(
key
,
value
)
})
// set id to null if not passed as value
// a newly created model has no id
var
defaults
=
this
.
__options
.
hasPrimaryKeys
?
{}
:
{
id
:
null
}
if
(
this
.
__options
.
timestamps
)
{
defaults
[
this
.
__options
.
underscored
?
'created_at'
:
'createdAt'
]
=
new
Date
()
defaults
[
this
.
__options
.
underscored
?
'updated_at'
:
'updatedAt'
]
=
new
Date
()
if
(
this
.
__options
.
paranoid
)
defaults
[
this
.
__options
.
underscored
?
'deleted_at'
:
'deletedAt'
]
=
null
}
}
Utils
.
addEventEmitter
(
Model
)
Utils
.
_
.
extend
(
Model
.
prototype
,
Mixin
.
prototype
)
Utils
.
_
.
map
(
defaults
,
function
(
value
,
attr
)
{
Model
.
Events
=
{
if
(
!
self
.
hasOwnProperty
(
attr
))
self
.
addAttribute
(
attr
,
value
)
})
}
Utils
.
addEventEmitter
(
Model
)
Utils
.
_
.
extend
(
Model
.
prototype
,
Mixin
.
prototype
)
Model
.
Events
=
{
insert
:
'InsertQuery'
,
insert
:
'InsertQuery'
,
update
:
'UpdateQuery'
,
update
:
'UpdateQuery'
,
destroy
:
'DestroyQuery'
destroy
:
'DestroyQuery'
}
}
Model
.
prototype
.
__defineGetter__
(
'QueryGenerator'
,
function
()
{
Model
.
prototype
.
__defineGetter__
(
'QueryGenerator'
,
function
()
{
return
this
.
__definition
.
QueryGenerator
return
this
.
__definition
.
QueryGenerator
})
})
Model
.
prototype
.
addAttribute
=
function
(
attribute
,
value
)
{
this
[
attribute
]
=
value
this
.
attributes
.
push
(
attribute
)
}
Model
.
prototype
.
query
=
function
()
{
var
args
=
Utils
.
_
.
map
(
arguments
,
function
(
arg
,
_
)
{
return
arg
})
,
s
=
this
.
__definition
.
modelManager
.
sequelize
args
.
push
(
this
)
return
s
.
query
.
apply
(
s
,
args
)
}
Model
.
prototype
.
save
=
function
()
{
Model
.
prototype
.
save
=
function
()
{
var
attr
=
this
.
__options
.
underscored
?
'updated_at'
:
'updatedAt'
var
attr
=
this
.
__options
.
underscored
?
'updated_at'
:
'updatedAt'
if
(
this
.
hasOwnProperty
(
attr
))
if
(
this
.
hasOwnProperty
(
attr
))
...
@@ -63,7 +33,7 @@ Model.prototype.save = function() {
...
@@ -63,7 +33,7 @@ Model.prototype.save = function() {
if
(
this
.
isNewRecord
)
{
if
(
this
.
isNewRecord
)
{
var
self
=
this
var
self
=
this
var
eventEmitter
=
new
Utils
.
CustomEventEmitter
(
function
()
{
var
eventEmitter
=
new
Utils
.
CustomEventEmitter
(
function
()
{
self
.
query
(
self
.
QueryGenerator
.
insertQuery
(
self
.
__definition
.
tableName
,
self
.
values
))
query
.
call
(
self
,
self
.
QueryGenerator
.
insertQuery
(
self
.
__definition
.
tableName
,
self
.
values
))
.
on
(
'success'
,
function
(
obj
)
{
.
on
(
'success'
,
function
(
obj
)
{
obj
.
isNewRecord
=
false
obj
.
isNewRecord
=
false
eventEmitter
.
emit
(
'success'
,
obj
)
eventEmitter
.
emit
(
'success'
,
obj
)
...
@@ -73,11 +43,11 @@ Model.prototype.save = function() {
...
@@ -73,11 +43,11 @@ Model.prototype.save = function() {
return
eventEmitter
.
run
()
return
eventEmitter
.
run
()
}
else
{
}
else
{
var
identifier
=
this
.
__options
.
hasPrimaryKeys
?
this
.
primaryKeyValues
:
this
.
id
var
identifier
=
this
.
__options
.
hasPrimaryKeys
?
this
.
primaryKeyValues
:
this
.
id
return
this
.
query
(
this
.
QueryGenerator
.
updateQuery
(
this
.
__definition
.
tableName
,
this
.
values
,
identifier
))
return
query
.
call
(
this
,
this
.
QueryGenerator
.
updateQuery
(
this
.
__definition
.
tableName
,
this
.
values
,
identifier
))
}
}
}
}
Model
.
prototype
.
updateAttributes
=
function
(
updates
)
{
Model
.
prototype
.
updateAttributes
=
function
(
updates
)
{
var
self
=
this
var
self
=
this
var
readOnlyAttributes
=
Utils
.
_
.
keys
(
this
.
__definition
.
primaryKeys
)
var
readOnlyAttributes
=
Utils
.
_
.
keys
(
this
.
__definition
.
primaryKeys
)
...
@@ -95,19 +65,19 @@ Model.prototype.updateAttributes = function(updates) {
...
@@ -95,19 +65,19 @@ Model.prototype.updateAttributes = function(updates) {
updateAllowed
&&
(
self
[
attr
]
=
value
)
updateAllowed
&&
(
self
[
attr
]
=
value
)
})
})
return
this
.
save
()
return
this
.
save
()
}
}
Model
.
prototype
.
destroy
=
function
()
{
Model
.
prototype
.
destroy
=
function
()
{
if
(
this
.
__options
.
timestamps
&&
this
.
__options
.
paranoid
)
{
if
(
this
.
__options
.
timestamps
&&
this
.
__options
.
paranoid
)
{
this
[
this
.
__options
.
underscored
?
'deleted_at'
:
'deletedAt'
]
=
new
Date
()
this
[
this
.
__options
.
underscored
?
'deleted_at'
:
'deletedAt'
]
=
new
Date
()
return
this
.
save
()
return
this
.
save
()
}
else
{
}
else
{
var
identifier
=
this
.
__options
.
hasPrimaryKeys
?
this
.
primaryKeyValues
:
this
.
id
var
identifier
=
this
.
__options
.
hasPrimaryKeys
?
this
.
primaryKeyValues
:
this
.
id
return
this
.
query
(
this
.
QueryGenerator
.
deleteQuery
(
this
.
__definition
.
tableName
,
identifier
))
return
query
.
call
(
this
,
this
.
QueryGenerator
.
deleteQuery
(
this
.
__definition
.
tableName
,
identifier
))
}
}
}
}
Model
.
prototype
.
__defineGetter__
(
"identifiers"
,
function
()
{
Model
.
prototype
.
__defineGetter__
(
"identifiers"
,
function
()
{
var
primaryKeys
=
Utils
.
_
.
keys
(
this
.
__definition
.
primaryKeys
)
var
primaryKeys
=
Utils
.
_
.
keys
(
this
.
__definition
.
primaryKeys
)
,
result
=
{}
,
result
=
{}
,
self
=
this
,
self
=
this
...
@@ -120,16 +90,16 @@ Model.prototype.__defineGetter__("identifiers", function() {
...
@@ -120,16 +90,16 @@ Model.prototype.__defineGetter__("identifiers", function() {
})
})
return
result
return
result
})
})
Model
.
prototype
.
__defineGetter__
(
'isDeleted'
,
function
()
{
Model
.
prototype
.
__defineGetter__
(
'isDeleted'
,
function
()
{
var
result
=
this
.
__options
.
timestamps
&&
this
.
__options
.
paranoid
var
result
=
this
.
__options
.
timestamps
&&
this
.
__options
.
paranoid
result
=
result
&&
this
[
this
.
__options
.
underscored
?
'deleted_at'
:
'deletedAt'
]
!=
null
result
=
result
&&
this
[
this
.
__options
.
underscored
?
'deleted_at'
:
'deletedAt'
]
!=
null
return
result
return
result
})
})
Model
.
prototype
.
__defineGetter__
(
'values'
,
function
()
{
Model
.
prototype
.
__defineGetter__
(
'values'
,
function
()
{
var
result
=
{}
var
result
=
{}
,
self
=
this
,
self
=
this
...
@@ -138,9 +108,9 @@ Model.prototype.__defineGetter__('values', function() {
...
@@ -138,9 +108,9 @@ Model.prototype.__defineGetter__('values', function() {
})
})
return
result
return
result
})
})
Model
.
prototype
.
__defineGetter__
(
'primaryKeyValues'
,
function
()
{
Model
.
prototype
.
__defineGetter__
(
'primaryKeyValues'
,
function
()
{
var
result
=
{}
var
result
=
{}
,
self
=
this
,
self
=
this
...
@@ -149,9 +119,9 @@ Model.prototype.__defineGetter__('primaryKeyValues', function() {
...
@@ -149,9 +119,9 @@ Model.prototype.__defineGetter__('primaryKeyValues', function() {
})
})
return
result
return
result
})
})
Model
.
prototype
.
equals
=
function
(
other
)
{
Model
.
prototype
.
equals
=
function
(
other
)
{
var
result
=
true
var
result
=
true
,
self
=
this
,
self
=
this
...
@@ -160,16 +130,59 @@ Model.prototype.equals = function(other) {
...
@@ -160,16 +130,59 @@ Model.prototype.equals = function(other) {
})
})
return
result
return
result
}
}
Model
.
prototype
.
equalsOneOf
=
function
(
others
)
{
Model
.
prototype
.
equalsOneOf
=
function
(
others
)
{
var
result
=
false
var
result
=
false
,
self
=
this
,
self
=
this
others
.
forEach
(
function
(
other
)
{
result
=
result
||
self
.
equals
(
other
)
})
others
.
forEach
(
function
(
other
)
{
result
=
result
||
self
.
equals
(
other
)
})
return
result
return
result
}
}
// private
var
initAttributes
=
function
(
values
)
{
var
self
=
this
// add all passed values to the model and store the attribute names in this.attributes
Utils
.
_
.
map
(
values
,
function
(
value
,
key
)
{
self
.
__addAttribute
(
key
,
value
)
})
// set id to null if not passed as value
// a newly created model has no id
var
defaults
=
this
.
__options
.
hasPrimaryKeys
?
{}
:
{
id
:
null
}
if
(
this
.
__options
.
timestamps
)
{
defaults
[
this
.
__options
.
underscored
?
'created_at'
:
'createdAt'
]
=
new
Date
()
defaults
[
this
.
__options
.
underscored
?
'updated_at'
:
'updatedAt'
]
=
new
Date
()
if
(
this
.
__options
.
paranoid
)
defaults
[
this
.
__options
.
underscored
?
'deleted_at'
:
'deletedAt'
]
=
null
}
Utils
.
_
.
map
(
defaults
,
function
(
value
,
attr
)
{
if
(
!
self
.
hasOwnProperty
(
attr
))
self
.
__addAttribute
(
attr
,
value
)
})
}
var
query
=
function
()
{
var
args
=
Utils
.
_
.
map
(
arguments
,
function
(
arg
,
_
)
{
return
arg
})
,
s
=
this
.
__definition
.
modelManager
.
sequelize
args
.
push
(
this
)
return
s
.
query
.
apply
(
s
,
args
)
}
Model
.
prototype
.
__addAttribute
=
function
(
attribute
,
value
)
{
this
[
attribute
]
=
value
this
.
attributes
.
push
(
attribute
)
}
/* Add the instance methods to Model */
Utils
.
_
.
extend
(
Model
.
prototype
,
Mixin
.
prototype
)
/* Add the instance methods to Model */
return
Model
Utils
.
_
.
extend
(
Model
.
prototype
,
Mixin
.
prototype
)
})(
)
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment