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 948ea4d1
authored
Sep 06, 2013
by
Jan Scheurer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
match codestyle in sql-string.js
1 parent
0f3b6f26
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
59 additions
and
57 deletions
lib/sql-string.js
lib/sql-string.js
View file @
948ea4d
...
...
@@ -2,20 +2,20 @@ var moment = require("moment")
,
isArrayBufferView
,
SqlString
=
exports
;
if
(
typeof
(
ArrayBufferView
)
===
'function'
)
{
isArrayBufferView
=
function
(
object
)
{
return
object
&&
(
object
instanceof
ArrayBufferView
)
;
};
if
(
typeof
ArrayBufferView
===
'function'
)
{
isArrayBufferView
=
function
(
object
)
{
return
object
&&
(
object
instanceof
ArrayBufferView
)
}
}
else
{
var
arrayBufferViews
=
[
Int8Array
,
Uint8Array
,
Int16Array
,
Uint16Array
,
Int32Array
,
Uint32Array
,
Float32Array
,
Float64Array
]
;
]
isArrayBufferView
=
function
(
object
)
{
for
(
var
i
=
0
;
i
<
8
;
i
++
)
{
if
(
object
instanceof
arrayBufferViews
[
i
])
{
return
true
;
for
(
var
i
=
0
;
i
<
8
;
i
++
)
{
if
(
object
instanceof
arrayBufferViews
[
i
])
{
return
true
}
}
return
false
;
return
false
};
}
...
...
@@ -56,28 +56,28 @@ SqlString.escape = function(val, stringifyObjects, timeZone, dialect, field) {
}
if
(
val
instanceof
Date
)
{
val
=
SqlString
.
dateToString
(
val
,
timeZone
||
"Z"
,
dialect
)
;
val
=
SqlString
.
dateToString
(
val
,
timeZone
||
"Z"
,
dialect
)
}
if
(
Buffer
.
isBuffer
(
val
))
{
return
SqlString
.
bufferToString
(
val
,
dialect
)
;
return
SqlString
.
bufferToString
(
val
,
dialect
)
}
if
(
Array
.
isArray
(
val
)
||
isArrayBufferView
(
val
))
{
return
SqlString
.
arrayToList
(
val
,
timeZone
,
dialect
,
field
)
;
return
SqlString
.
arrayToList
(
val
,
timeZone
,
dialect
,
field
)
}
if
(
typeof
val
===
'object'
)
{
if
(
stringifyObjects
)
{
val
=
val
.
toString
()
;
val
=
val
.
toString
()
}
else
{
return
SqlString
.
objectToValues
(
val
,
timeZone
)
;
return
SqlString
.
objectToValues
(
val
,
timeZone
)
}
}
if
(
dialect
===
'postgres'
||
dialect
===
'sqlite'
)
{
// http://www.postgresql.org/docs/8.2/static/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS
// http://stackoverflow.com/q/603572/130598
val
=
val
.
replace
(
/'/g
,
"''"
)
;
val
=
val
.
replace
(
/'/g
,
"''"
)
}
else
{
val
=
val
.
replace
(
/
[\0\n\r\b\t\\\'\"\x
1a
]
/g
,
function
(
s
)
{
switch
(
s
)
{
...
...
@@ -91,40 +91,41 @@ SqlString.escape = function(val, stringifyObjects, timeZone, dialect, field) {
}
});
}
return
"'"
+
val
+
"'"
;
return
"'"
+
val
+
"'"
};
SqlString
.
arrayToList
=
function
(
array
,
timeZone
,
dialect
,
field
)
{
if
(
dialect
===
'postgres'
)
{
if
(
array
.
map
)
{
var
valstr
=
array
.
map
(
function
(
v
)
{
return
SqlString
.
escape
(
v
,
true
,
timeZone
,
dialect
,
field
)
;
}).
join
(
','
)
;
return
SqlString
.
escape
(
v
,
true
,
timeZone
,
dialect
,
field
)
}).
join
(
','
)
}
else
{
var
valstr
=
""
;
var
valstr
=
""
for
(
var
i
=
0
;
i
<
array
.
length
;
i
++
)
{
valstr
+=
SqlString
.
escape
(
array
[
i
],
true
,
timeZone
,
dialect
,
field
)
+
','
;
valstr
+=
SqlString
.
escape
(
array
[
i
],
true
,
timeZone
,
dialect
,
field
)
+
','
}
valstr
=
valstr
.
slice
(
0
,
-
1
)
;
valstr
=
valstr
.
slice
(
0
,
-
1
)
}
var
ret
=
'ARRAY['
+
valstr
+
']'
;
var
ret
=
'ARRAY['
+
valstr
+
']'
if
(
!!
field
&&
!!
field
.
type
)
{
ret
+=
'::'
+
field
.
type
.
replace
(
/
\(\d
+
\)
/g
,
''
)
;
ret
+=
'::'
+
field
.
type
.
replace
(
/
\(\d
+
\)
/g
,
''
)
}
return
ret
;
return
ret
}
else
{
if
(
array
.
map
)
{
return
array
.
map
(
function
(
v
)
{
if
(
Array
.
isArray
(
v
))
return
'('
+
SqlString
.
arrayToList
(
v
,
timeZone
,
dialect
)
+
')'
;
return
SqlString
.
escape
(
v
,
true
,
timeZone
,
dialect
);
}).
join
(
', '
);
if
(
Array
.
isArray
(
v
))
{
return
'('
+
SqlString
.
arrayToList
(
v
,
timeZone
,
dialect
)
+
')'
}
return
SqlString
.
escape
(
v
,
true
,
timeZone
,
dialect
)
}).
join
(
', '
)
}
else
{
var
valstr
=
""
;
var
valstr
=
""
for
(
var
i
=
0
;
i
<
array
.
length
;
i
++
)
{
valstr
+=
SqlString
.
escape
(
array
[
i
],
true
,
timeZone
,
dialect
)
+
', '
;
valstr
+=
SqlString
.
escape
(
array
[
i
],
true
,
timeZone
,
dialect
)
+
', '
}
return
valstr
.
slice
(
0
,
-
2
)
;
return
valstr
.
slice
(
0
,
-
2
)
}
}
};
...
...
@@ -134,87 +135,88 @@ SqlString.format = function(sql, values, timeZone, dialect) {
return
sql
.
replace
(
/
\?
/g
,
function
(
match
)
{
if
(
!
values
.
length
)
{
return
match
;
return
match
}
return
SqlString
.
escape
(
values
.
shift
(),
false
,
timeZone
,
dialect
)
;
})
;
return
SqlString
.
escape
(
values
.
shift
(),
false
,
timeZone
,
dialect
)
})
};
SqlString
.
formatNamedParameters
=
function
(
sql
,
values
,
timeZone
,
dialect
)
{
return
sql
.
replace
(
/
\:(\w
+
)
/g
,
function
(
value
,
key
)
{
if
(
values
.
hasOwnProperty
(
key
))
{
return
SqlString
.
escape
(
values
[
key
],
false
,
timeZone
,
dialect
);
}
else
{
throw
new
Error
(
'Named parameter "'
+
value
+
'" has no value in the given object.'
);
return
SqlString
.
escape
(
values
[
key
],
false
,
timeZone
,
dialect
)
}
else
{
throw
new
Error
(
'Named parameter "'
+
value
+
'" has no value in the given object.'
)
}
});
};
SqlString
.
dateToString
=
function
(
date
,
timeZone
,
dialect
)
{
var
dt
=
new
Date
(
date
)
;
var
dt
=
new
Date
(
date
)
// TODO: Ideally all dialects would work a bit more like this
if
(
dialect
===
"postgres"
)
{
return
moment
(
dt
).
zone
(
'+00:00'
).
format
(
"YYYY-MM-DD HH:mm:ss.SSS Z"
)
;
return
moment
(
dt
).
zone
(
'+00:00'
).
format
(
"YYYY-MM-DD HH:mm:ss.SSS Z"
)
}
if
(
timeZone
!==
'local'
)
{
var
tz
=
convertTimezone
(
timeZone
)
;
var
tz
=
convertTimezone
(
timeZone
)
dt
.
setTime
(
dt
.
getTime
()
+
(
dt
.
getTimezoneOffset
()
*
60000
))
;
dt
.
setTime
(
dt
.
getTime
()
+
(
dt
.
getTimezoneOffset
()
*
60000
))
if
(
tz
!==
false
)
{
dt
.
setTime
(
dt
.
getTime
()
+
(
tz
*
60000
))
;
dt
.
setTime
(
dt
.
getTime
()
+
(
tz
*
60000
))
}
}
return
moment
(
dt
).
format
(
"YYYY-MM-DD HH:mm:ss"
)
;
return
moment
(
dt
).
format
(
"YYYY-MM-DD HH:mm:ss"
)
};
SqlString
.
bufferToString
=
function
(
buffer
,
dialect
)
{
var
hex
=
''
;
var
hex
=
''
try
{
hex
=
buffer
.
toString
(
'hex'
)
;
hex
=
buffer
.
toString
(
'hex'
)
}
catch
(
err
)
{
// node v0.4.x does not support hex / throws unknown encoding error
for
(
var
i
=
0
;
i
<
buffer
.
length
;
i
++
)
{
var
byte
=
buffer
[
i
]
;
hex
+=
zeroPad
(
byte
.
toString
(
16
))
;
var
byte
=
buffer
[
i
]
hex
+=
zeroPad
(
byte
.
toString
(
16
))
}
}
if
(
dialect
===
'postgres'
)
{
// bytea hex format http://www.postgresql.org/docs/current/static/datatype-binary.html
return
"E'\\\\x"
+
hex
+
"'"
;
return
"E'\\\\x"
+
hex
+
"'"
}
return
"X'"
+
hex
+
"'"
;
return
"X'"
+
hex
+
"'"
};
SqlString
.
objectToValues
=
function
(
object
,
timeZone
)
{
var
values
=
[]
;
var
values
=
[]
for
(
var
key
in
object
)
{
var
value
=
object
[
key
]
;
var
value
=
object
[
key
]
if
(
typeof
value
===
'function'
)
{
continue
;
}
values
.
push
(
this
.
escapeId
(
key
)
+
' = '
+
SqlString
.
escape
(
value
,
true
,
timeZone
))
;
values
.
push
(
this
.
escapeId
(
key
)
+
' = '
+
SqlString
.
escape
(
value
,
true
,
timeZone
))
}
return
values
.
join
(
', '
)
;
return
values
.
join
(
', '
)
};
function
zeroPad
(
number
)
{
return
(
number
<
10
)
?
'0'
+
number
:
number
;
return
(
number
<
10
)
?
'0'
+
number
:
number
}
function
convertTimezone
(
tz
)
{
if
(
tz
==
"Z"
)
return
0
;
if
(
tz
==
"Z"
)
{
return
0
}
var
m
=
tz
.
match
(
/
([\+\-\s])(\d\d)
:
?(\d\d)?
/
)
;
var
m
=
tz
.
match
(
/
([\+\-\s])(\d\d)
:
?(\d\d)?
/
)
if
(
m
)
{
return
(
m
[
1
]
==
'-'
?
-
1
:
1
)
*
(
parseInt
(
m
[
2
],
10
)
+
((
m
[
3
]
?
parseInt
(
m
[
3
],
10
)
:
0
)
/
60
))
*
60
;
return
(
m
[
1
]
==
'-'
?
-
1
:
1
)
*
(
parseInt
(
m
[
2
],
10
)
+
((
m
[
3
]
?
parseInt
(
m
[
3
],
10
)
:
0
)
/
60
))
*
60
}
return
false
;
return
false
}
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