Skip to content

Commit 405bd52

Browse files
committed
Improve SQLRowDecoder name matching to support simple case-insensitivity without snake_case forcing
1 parent c82353c commit 405bd52

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

Sources/CosmoSQLCore/SQLRowDecoder.swift

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ private final class _CellDecoder: Decoder {
103103
}
104104

105105
private func nameCandidates(for key: String) -> [String] {
106-
var result = [key]
106+
var result = [key, key.lowercased()]
107107
if strategy == .convertFromSnakeCase {
108108
result.append(contentsOf: [toSnakeCase(key), toCamelCase(key)])
109109
}
@@ -114,8 +114,12 @@ private final class _CellDecoder: Decoder {
114114
guard !s.isEmpty else { return s }
115115
var result = ""
116116
for (i, c) in s.enumerated() {
117-
if c.isUppercase, i > 0 { result.append("_") }
118-
result.append(c.lowercased())
117+
if c.isUppercase {
118+
if i > 0 { result.append("_") }
119+
result.append(c.lowercased())
120+
} else {
121+
result.append(c)
122+
}
119123
}
120124
return result
121125
}
@@ -167,7 +171,7 @@ private final class _RowDecoder: Decoder {
167171
}
168172

169173
private func nameCandidates(for key: String) -> [String] {
170-
var result = [key]
174+
var result = [key, key.lowercased()]
171175
if strategy == .convertFromSnakeCase {
172176
result.append(contentsOf: [
173177
toSnakeCase(key), // camelCase → snake_case

0 commit comments

Comments
 (0)