Skip to content

Commit 05c404f

Browse files
committed
cleanup sql creation
1 parent 0872647 commit 05c404f

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

Sources/SQLite/Typed/Query.swift

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -663,12 +663,14 @@ extension QueryType {
663663
}
664664

665665
fileprivate func insertMany(_ or: OnConflict?, _ values: [[Setter]]) -> Insert {
666-
guard values.count > 0 else {
666+
guard let firstInsert = values.first else {
667+
// must be at least 1 object or else we don't know columns. Default to default inserts.
667668
return insert()
668669
}
669-
let insertRows = values.map { rowValues in
670-
rowValues.reduce((columns: [Expressible](), values: [Expressible]())) { insert, setter in
671-
(insert.columns + [setter.column], insert.values + [setter.value])
670+
let columns = firstInsert.map { $0.column }
671+
let insertValues = values.map { rowValues in
672+
rowValues.reduce([Expressible]()) { insert, setter in
673+
insert + [setter.value]
672674
}
673675
}
674676

@@ -677,9 +679,9 @@ extension QueryType {
677679
or.map { Expression<Void>(literal: "OR \($0.rawValue)") },
678680
Expression<Void>(literal: "INTO"),
679681
tableName(),
680-
"".wrap(insertRows[0].columns) as Expression<Void>,
682+
"".wrap(columns) as Expression<Void>,
681683
Expression<Void>(literal: "VALUES"),
682-
", ".join(insertRows.map(\.values).map({ "".wrap($0) as Expression<Void> })),
684+
", ".join(insertValues.map({ "".wrap($0) as Expression<Void> })),
683685
whereClause
684686
]
685687
return Insert(" ".join(clauses.compactMap { $0 }).expression)

0 commit comments

Comments
 (0)