@@ -110,9 +110,28 @@ function values(first, rest, parameters, types, transform) {
110110 return valuesBuilder ( multi ? first : [ first ] , parameters , types , transform , columns )
111111}
112112
113+ function select ( first , rest , parameters , types , transform ) {
114+ typeof first === 'string' && ( first = [ first ] . concat ( rest ) )
115+ if ( Array . isArray ( first ) )
116+ return first . map ( x => escapeIdentifier ( transform . column . to ? transform . column . to ( x ) : x ) ) . join ( ',' )
117+
118+ let value
119+ const columns = rest . length ? rest . flat ( ) : Object . keys ( first )
120+ return columns . map ( x => {
121+ value = first [ x ]
122+ return (
123+ value instanceof Query ? value . strings [ 0 ] :
124+ value instanceof Identifier ? value . value :
125+ handleValue ( value , parameters , types )
126+ ) + ' as ' + escapeIdentifier ( transform . column . to ? transform . column . to ( x ) : x )
127+ } ) . join ( ',' )
128+ }
129+
113130const builders = Object . entries ( {
114131 values,
115132 in : values ,
133+ select,
134+ returning : select ,
116135
117136 update ( first , rest , parameters , types , transform ) {
118137 return ( rest . length ? rest . flat ( ) : Object . keys ( first ) ) . map ( x =>
@@ -121,23 +140,6 @@ const builders = Object.entries({
121140 )
122141 } ,
123142
124- select ( first , rest , parameters , types , transform ) {
125- typeof first === 'string' && ( first = [ first ] . concat ( rest ) )
126- if ( Array . isArray ( first ) )
127- return first . map ( x => escapeIdentifier ( transform . column . to ? transform . column . to ( x ) : x ) ) . join ( ',' )
128-
129- let value
130- const columns = rest . length ? rest . flat ( ) : Object . keys ( first )
131- return columns . map ( x => {
132- value = first [ x ]
133- return (
134- value instanceof Query ? value . strings [ 0 ] :
135- value instanceof Identifier ? value . value :
136- handleValue ( value , parameters , types )
137- ) + ' as ' + escapeIdentifier ( transform . column . to ? transform . column . to ( x ) : x )
138- } ) . join ( ',' )
139- } ,
140-
141143 insert ( first , rest , parameters , types , transform ) {
142144 const columns = rest . length ? rest . flat ( ) : Object . keys ( Array . isArray ( first ) ? first [ 0 ] : first )
143145 return '(' + columns . map ( x =>
0 commit comments