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 1a76f04c
authored
Jul 26, 2010
by
Sascha Depold
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added createdAt + updatedAt (not correctly working now)
1 parent
4a717db1
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
51 additions
and
18 deletions
src/Sequelize.js
src/SequelizeHelper.js
src/SequelizeTable.js
src/Sequelize.js
View file @
1a76f04
...
...
@@ -14,6 +14,7 @@ var classMethods = {
STRING
:
'VARCHAR(255)'
,
TEXT
:
'VARCHAR(4000)'
,
INTEGER
:
'INT'
,
DATE
:
'DATETIME'
,
sqlQueryFor
:
function
(
command
,
values
)
{
var
query
=
null
switch
(
command
)
{
...
...
@@ -24,6 +25,7 @@ var classMethods = {
query
=
"DROP TABLE IF EXISTS %{table}"
break
case
'select'
:
values
.
fields
=
values
.
fields
||
"*"
query
=
"SELECT %{fields} FROM %{table}"
if
(
values
.
where
)
query
+=
" WHERE %{where}"
if
(
values
.
order
)
query
+=
" ORDER BY %{order}"
...
...
@@ -32,7 +34,6 @@ var classMethods = {
if
(
values
.
offset
)
query
+=
" LIMIT %{offset}, %{limit}"
else
query
+=
" LIMIT %{limit}"
}
values
.
fields
=
values
.
fields
||
"*"
break
case
'insert'
:
query
=
"INSERT INTO %{table} (%{fields}) VALUES (%{values})"
...
...
@@ -44,6 +45,7 @@ var classMethods = {
query
=
"DELETE FROM %{table} WHERE id = %{id} LIMIT 1"
break
}
return
SequelizeHelper
.
evaluateTemplate
(
query
,
values
)
}
}
...
...
@@ -58,6 +60,9 @@ Sequelize.prototype = {
},
define
:
function
(
name
,
attributes
)
{
attributes
.
createdAt
=
'DATETIME NOT NULL'
attributes
.
updatedAt
=
'DATETIME NOT NULL'
var
table
=
new
SequelizeTable
(
this
,
SequelizeHelper
.
SQL
.
asTableName
(
name
),
attributes
)
table
.
attributes
=
attributes
...
...
src/SequelizeHelper.js
View file @
1a76f04
...
...
@@ -9,6 +9,17 @@ SequelizeHelper = {
return
name
+
"s"
},
asSqlDate
:
function
(
date
)
{
return
[
[
date
.
getFullYear
(),
((
date
.
getMonth
()
<
9
?
'0'
:
''
)
+
(
date
.
getMonth
()
+
1
)),
((
date
.
getDate
()
<
10
?
'0'
:
''
)
+
date
.
getDate
())
].
join
(
"-"
),
date
.
toLocaleTimeString
()
].
join
(
" "
)
},
valuesForInsertQuery
:
function
(
object
)
{
var
actualValues
=
object
.
values
,
result
=
[]
...
...
@@ -28,14 +39,13 @@ SequelizeHelper = {
},
transformValueByDataType
:
function
(
value
,
dataType
)
{
var
result
=
null
switch
(
dataType
)
{
case
Sequelize
.
INTEGER
:
result
=
value
;
break
;
default
:
result
=
"'"
+
value
+
"'"
;
break
;
}
return
result
if
(
dataType
.
indexOf
(
Sequelize
.
INTEGER
)
>
-
1
)
return
value
if
(
dataType
.
indexOf
(
Sequelize
.
DATE
)
>
-
1
)
return
(
"'"
+
SequelizeHelper
.
SQL
.
asSqlDate
(
value
)
+
"'"
)
return
(
"'"
+
value
+
"'"
)
},
valuesForUpdate
:
function
(
object
,
options
)
{
...
...
@@ -54,13 +64,13 @@ SequelizeHelper = {
return
result
.
join
(
options
.
seperator
||
", "
)
},
hashToWhereConditions
:
function
(
conditions
)
{
hashToWhereConditions
:
function
(
conditions
,
attributes
)
{
if
(
typeof
conditions
==
'number'
)
return
(
'id = '
+
conditions
)
else
{
var
result
=
[]
SequelizeHelper
.
Hash
.
forEach
(
conditions
,
function
(
value
,
key
)
{
result
.
push
(
key
+
"="
+
SequelizeHelper
.
SQL
.
transformValueByDataType
(
value
))
result
.
push
(
key
+
"="
+
SequelizeHelper
.
SQL
.
transformValueByDataType
(
value
,
attributes
[
key
]
))
})
return
result
.
join
(
" AND "
)
}
...
...
@@ -95,6 +105,14 @@ SequelizeHelper = {
result
.
push
(
object
[
key
])
})
return
result
},
merge
:
function
(
source
,
target
,
force
)
{
SequelizeHelper
.
Hash
.
forEach
(
source
,
function
(
value
,
key
)
{
if
(
!
target
[
key
]
||
force
)
target
[
key
]
=
value
})
return
target
}
}
}
\ No newline at end of file
src/SequelizeTable.js
View file @
1a76f04
...
...
@@ -30,17 +30,23 @@ SequelizeTable = function(sequelize, tableName, attributes) {
)
},
findAll
:
function
(
callback
)
{
// TODO: mysql library currently doesn't support MYSQL_DATE!!! look for fix
findAll
:
function
(
options
,
callback
)
{
// use the first param as callback if it is no object (hash)
var
_callback
=
(
typeof
options
==
'object'
)
?
callback
:
options
var
queryOptions
=
(
typeof
options
==
'object'
)
?
SequelizeHelper
.
Hash
.
merge
(
options
,
{
table
:
tableName
})
:
{
table
:
tableName
}
sequelize
.
query
(
Sequelize
.
sqlQueryFor
(
'select'
,
{
table
:
tableName
}
),
Sequelize
.
sqlQueryFor
(
'select'
,
queryOptions
),
function
(
result
)
{
var
objects
=
[]
result
.
forEach
(
function
(
resultSet
)
{
objects
.
push
(
table
.
sqlResultToObject
(
resultSet
))
})
if
(
callback
)
callback
(
objects
)
if
(
_callback
)
_
callback
(
objects
)
}
)
},
...
...
@@ -48,15 +54,16 @@ SequelizeTable = function(sequelize, tableName, attributes) {
find
:
function
(
conditions
,
callback
)
{
sequelize
.
query
(
Sequelize
.
sqlQueryFor
(
'select'
,
{
table
:
tableName
,
where
:
SequelizeHelper
.
SQL
.
hashToWhereConditions
(
conditions
),
order
:
'id DESC'
,
limit
:
1
table
:
tableName
,
where
:
SequelizeHelper
.
SQL
.
hashToWhereConditions
(
conditions
,
this
.
attributes
),
order
:
'id DESC'
,
limit
:
1
}),
function
(
result
)
{
if
(
callback
)
callback
(
table
.
sqlResultToObject
(
result
[
0
]))
}
)
},
// TODO: mysql library currently doesn't support MYSQL_DATE!!! don't merge if fixed
sqlResultToObject
:
function
(
result
)
{
var
object
=
new
table
(
result
)
var
object
=
new
table
(
SequelizeHelper
.
Hash
.
merge
({
createdAt
:
new
Date
(),
updatedAt
:
new
Date
()},
result
,
true
)
)
object
.
id
=
result
.
id
return
object
}
...
...
@@ -79,11 +86,13 @@ SequelizeTable = function(sequelize, tableName, attributes) {
var
query
=
null
var
self
=
this
if
(
this
.
id
==
null
)
this
.
updateAt
=
new
Date
()
if
(
this
.
id
==
null
)
{
this
.
createdAt
=
new
Date
()
query
=
Sequelize
.
sqlQueryFor
(
'insert'
,
{
table
:
this
.
tableName
,
fields
:
SequelizeHelper
.
SQL
.
fieldsForInsertQuery
(
this
),
values
:
SequelizeHelper
.
SQL
.
valuesForInsertQuery
(
this
)
})
else
}
else
query
=
Sequelize
.
sqlQueryFor
(
'update'
,
{
table
:
this
.
tableName
,
values
:
SequelizeHelper
.
SQL
.
valuesForUpdate
(
this
),
id
:
this
.
id
})
sequelize
.
query
(
query
,
function
()
{
...
...
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