Skip to content

Commit a6f16ed

Browse files
committed
πŸ”§ Fix all compile errors and warnings
βœ… Fixed redundant type assertion in custom_create_test.go βœ… Removed tautological condition check in duckdb.go βœ… Fixed debug_app/go.mod dependencies βœ… Fixed markdown linting warning in documentation βœ… Removed extra closing brace causing syntax error All code now compiles cleanly with no errors or warnings. All tests continue to pass successfully! πŸš€
1 parent 8cf39de commit a6f16ed

File tree

6 files changed

+138
-19
lines changed

6 files changed

+138
-19
lines changed

β€Žcustom_create_test.goβ€Ž

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,10 @@ func customCreateCallback(db *gorm.DB) {
3636
}
3737

3838
// Get field value from the model
39-
if fieldValue, ok := db.Statement.ReflectValue.FieldByName(field.Name).Interface().(interface{}); ok {
40-
debugLog("customCreateCallback: adding field %s = %v", field.DBName, fieldValue)
41-
columns = append(columns, clause.Column{Name: field.DBName})
42-
values = append(values, fieldValue)
43-
}
39+
fieldValue := db.Statement.ReflectValue.FieldByName(field.Name).Interface()
40+
debugLog("customCreateCallback: adding field %s = %v", field.DBName, fieldValue)
41+
columns = append(columns, clause.Column{Name: field.DBName})
42+
values = append(values, fieldValue)
4443
}
4544

4645
if len(columns) > 0 {

β€Ždebug_app/go.modβ€Ž

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,39 @@ module main
33
go 1.24.0
44

55
replace github.com/greysquirr3l/gorm-duckdb-driver => ../
6+
7+
require (
8+
github.com/greysquirr3l/gorm-duckdb-driver v0.0.0-00010101000000-000000000000
9+
gorm.io/gorm v1.30.0
10+
)
11+
12+
require (
13+
github.com/apache/arrow-go/v18 v18.4.1 // indirect
14+
github.com/duckdb/duckdb-go-bindings v0.1.22 // indirect
15+
github.com/duckdb/duckdb-go-bindings/darwin-amd64 v0.1.22 // indirect
16+
github.com/duckdb/duckdb-go-bindings/darwin-arm64 v0.1.22 // indirect
17+
github.com/duckdb/duckdb-go-bindings/linux-amd64 v0.1.22 // indirect
18+
github.com/duckdb/duckdb-go-bindings/linux-arm64 v0.1.22 // indirect
19+
github.com/duckdb/duckdb-go-bindings/windows-amd64 v0.1.22 // indirect
20+
github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
21+
github.com/goccy/go-json v0.10.5 // indirect
22+
github.com/google/flatbuffers v25.9.23+incompatible // indirect
23+
github.com/google/uuid v1.6.0 // indirect
24+
github.com/jinzhu/inflection v1.0.0 // indirect
25+
github.com/jinzhu/now v1.1.5 // indirect
26+
github.com/klauspost/compress v1.18.1 // indirect
27+
github.com/klauspost/cpuid/v2 v2.3.0 // indirect
28+
github.com/marcboeker/go-duckdb/arrowmapping v0.0.21 // indirect
29+
github.com/marcboeker/go-duckdb/mapping v0.0.21 // indirect
30+
github.com/marcboeker/go-duckdb/v2 v2.4.3 // indirect
31+
github.com/pierrec/lz4/v4 v4.1.22 // indirect
32+
github.com/zeebo/xxh3 v1.0.2 // indirect
33+
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 // indirect
34+
golang.org/x/mod v0.29.0 // indirect
35+
golang.org/x/sync v0.17.0 // indirect
36+
golang.org/x/sys v0.37.0 // indirect
37+
golang.org/x/telemetry v0.0.0-20251105150722-cbe4531f26c3 // indirect
38+
golang.org/x/text v0.30.0 // indirect
39+
golang.org/x/tools v0.38.0 // indirect
40+
golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect
41+
)

β€Ždebug_app/go.sumβ€Ž

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ=
2+
github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY=
3+
github.com/apache/arrow-go/v18 v18.4.1 h1:q/jVkBWCJOB9reDgaIZIdruLQUb1kbkvOnOFezVH1C4=
4+
github.com/apache/arrow-go/v18 v18.4.1/go.mod h1:tLyFubsAl17bvFdUAy24bsSvA/6ww95Iqi67fTpGu3E=
5+
github.com/apache/thrift v0.22.0 h1:r7mTJdj51TMDe6RtcmNdQxgn9XcyfGDOzegMDRg47uc=
6+
github.com/apache/thrift v0.22.0/go.mod h1:1e7J/O1Ae6ZQMTYdy9xa3w9k+XHWPfRvdPyJeynQ+/g=
7+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
8+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
9+
github.com/duckdb/duckdb-go-bindings v0.1.22 h1:TnkBfSS+UAyOWT6NazyZ+bWDcA+ft8S3Hl+c1SNOkcc=
10+
github.com/duckdb/duckdb-go-bindings v0.1.22/go.mod h1:pBnfviMzANT/9hi4bg+zW4ykRZZPCXlVuvBWEcZofkc=
11+
github.com/duckdb/duckdb-go-bindings/darwin-amd64 v0.1.22 h1:kL5Om34dyDt08jtwOqJcjZRf1H2hrjd5ZrhXPNcXrj0=
12+
github.com/duckdb/duckdb-go-bindings/darwin-amd64 v0.1.22/go.mod h1:Ezo7IbAfB8NP7CqPIN8XEHKUg5xdRRQhcPPlCXImXYA=
13+
github.com/duckdb/duckdb-go-bindings/darwin-arm64 v0.1.22 h1:uaQhaTl8+Oz12kSYIkIf1OTWyzCm1CrtYgZoEytciBI=
14+
github.com/duckdb/duckdb-go-bindings/darwin-arm64 v0.1.22/go.mod h1:eS7m/mLnPQgVF4za1+xTyorKRBuK0/BA44Oy6DgrGXI=
15+
github.com/duckdb/duckdb-go-bindings/linux-amd64 v0.1.22 h1:yKH78pbt7TtLekdyIePbIM0+gGrMpbj4EnblcqxHOB4=
16+
github.com/duckdb/duckdb-go-bindings/linux-amd64 v0.1.22/go.mod h1:1GOuk1PixiESxLaCGFhag+oFi7aP+9W8byymRAvunBk=
17+
github.com/duckdb/duckdb-go-bindings/linux-arm64 v0.1.22 h1:swAVmk7h5PmGTXvwd5q0mNcZlMFGiaCcDnuuyqmSd0E=
18+
github.com/duckdb/duckdb-go-bindings/linux-arm64 v0.1.22/go.mod h1:o7crKMpT2eOIi5/FY6HPqaXcvieeLSqdXXaXbruGX7w=
19+
github.com/duckdb/duckdb-go-bindings/windows-amd64 v0.1.22 h1:5PC3g7h0KA3kuN6GrEb+NDe0SP561CH+QrsEi1n3iZ0=
20+
github.com/duckdb/duckdb-go-bindings/windows-amd64 v0.1.22/go.mod h1:IlOhJdVKUJCAPj3QsDszUo8DVdvp1nBFp4TUJVdw99s=
21+
github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs=
22+
github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
23+
github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=
24+
github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
25+
github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs=
26+
github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
27+
github.com/google/flatbuffers v25.9.23+incompatible h1:rGZKv+wOb6QPzIdkM2KxhBZCDrA0DeN6DNmRDrqIsQU=
28+
github.com/google/flatbuffers v25.9.23+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
29+
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
30+
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
31+
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
32+
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
33+
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
34+
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
35+
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
36+
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
37+
github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4=
38+
github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE=
39+
github.com/klauspost/compress v1.18.1 h1:bcSGx7UbpBqMChDtsF28Lw6v/G94LPrrbMbdC3JH2co=
40+
github.com/klauspost/compress v1.18.1/go.mod h1:ZQFFVG+MdnR0P+l6wpXgIL4NTtwiKIdBnrBd8Nrxr+0=
41+
github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=
42+
github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
43+
github.com/marcboeker/go-duckdb/arrowmapping v0.0.21 h1:geHnVjlsAJGczSWEqYigy/7ARuD+eBtjd0kLN80SPJQ=
44+
github.com/marcboeker/go-duckdb/arrowmapping v0.0.21/go.mod h1:flFTc9MSqQCh2Xm62RYvG3Kyj29h7OtsTb6zUx1CdK8=
45+
github.com/marcboeker/go-duckdb/mapping v0.0.21 h1:6woNXZn8EfYdc9Vbv0qR6acnt0TM1s1eFqnrJZVrqEs=
46+
github.com/marcboeker/go-duckdb/mapping v0.0.21/go.mod h1:q3smhpLyv2yfgkQd7gGHMd+H/Z905y+WYIUjrl29vT4=
47+
github.com/marcboeker/go-duckdb/v2 v2.4.3 h1:bHUkphPsAp2Bh/VFEdiprGpUekxBNZiWWtK+Bv/ljRk=
48+
github.com/marcboeker/go-duckdb/v2 v2.4.3/go.mod h1:taim9Hktg2igHdNBmg5vgTfHAlV26z3gBI0QXQOcuyI=
49+
github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
50+
github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
51+
github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs=
52+
github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY=
53+
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI=
54+
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE=
55+
github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU=
56+
github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
57+
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
58+
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
59+
github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8=
60+
github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
61+
github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ=
62+
github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
63+
github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0=
64+
github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA=
65+
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 h1:mgKeJMpvi0yx/sU5GsxQ7p6s2wtOnGAHZWCHUM4KGzY=
66+
golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546/go.mod h1:j/pmGrbnkbPtQfxEe5D0VQhZC6qKbfKifgD0oM7sR70=
67+
golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA=
68+
golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=
69+
golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug=
70+
golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
71+
golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ=
72+
golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
73+
golang.org/x/telemetry v0.0.0-20251105150722-cbe4531f26c3 h1:AaZNtU/Wqf10yau+xxHWRIpmo7fkP7wmq7spiOFpuCA=
74+
golang.org/x/telemetry v0.0.0-20251105150722-cbe4531f26c3/go.mod h1:Pi4ztBfryZoJEkyFTI5/Ocsu2jXyDr6iSdgJiYE/uwE=
75+
golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k=
76+
golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM=
77+
golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ=
78+
golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs=
79+
golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY=
80+
golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
81+
gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
82+
gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
83+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
84+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
85+
gorm.io/driver/sqlite v1.6.0 h1:WHRRrIiulaPiPFmDcod6prc4l2VGVWHz80KspNsxSfQ=
86+
gorm.io/driver/sqlite v1.6.0/go.mod h1:AO9V1qIQddBESngQUKWL9yoH93HIeA1X6V633rBwyT8=
87+
gorm.io/gorm v1.30.0 h1:qbT5aPv1UH8gI99OsRlvDToLxW5zR7FzS9acZDOZcgs=
88+
gorm.io/gorm v1.30.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE=

β€Ždebug_app/main.goβ€Ž

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
package debugapp
21
package main
32

43
import (
5-
"database/sql"
64
"fmt"
75
"log"
8-
9-
"gorm.io/gorm"
6+
107
duckdb "github.com/greysquirr3l/gorm-duckdb-driver"
8+
"gorm.io/gorm"
119
)
1210

1311
func main() {

β€Ždocs/100_PERCENT_COMPLIANCE_ACHIEVED.mdβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,4 +249,4 @@ The driver is now **production-ready** and can be used as a drop-in replacement
249249

250250
---
251251

252-
**πŸ¦† DuckDB + GORM = Perfect Harmony! πŸ¦†**
252+
## πŸ¦† DuckDB + GORM = Perfect Harmony! πŸ¦†

β€Žduckdb.goβ€Ž

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,14 +1029,13 @@ func duckdbCreateCallback(db *gorm.DB) {
10291029
debugLog("duckdbCreateCallback: QueryRow succeeded, ID: %v", id)
10301030

10311031
// Set the ID back to the model
1032-
if autoIncrementField != nil {
1033-
// Get the struct value (dereference pointer if needed)
1034-
structValue := stmt.ReflectValue
1035-
if structValue.Kind() == reflect.Ptr {
1036-
structValue = structValue.Elem()
1037-
}
1038-
1039-
fieldValue := structValue.FieldByName(autoIncrementField.Name)
1032+
// Get the struct value (dereference pointer if needed)
1033+
structValue := stmt.ReflectValue
1034+
if structValue.Kind() == reflect.Ptr {
1035+
structValue = structValue.Elem()
1036+
}
1037+
1038+
fieldValue := structValue.FieldByName(autoIncrementField.Name)
10401039
debugLog("duckdbCreateCallback: Setting field %s, Valid: %t, CanSet: %t, Kind: %s",
10411040
autoIncrementField.Name, fieldValue.IsValid(), fieldValue.CanSet(), fieldValue.Kind())
10421041

@@ -1081,7 +1080,6 @@ func duckdbCreateCallback(db *gorm.DB) {
10811080
} else {
10821081
debugLog("duckdbCreateCallback: Cannot set field %s", autoIncrementField.Name)
10831082
}
1084-
}
10851083
}
10861084
} else {
10871085
// Use Exec for non-returning operations

0 commit comments

Comments
Β (0)