diff --git a/gormlite/download.sh b/gormlite/download.sh index 5c7a862..052a6ec 100755 --- a/gormlite/download.sh +++ b/gormlite/download.sh @@ -3,9 +3,11 @@ set -euo pipefail cd -P -- "$(dirname -- "$0")" -curl -#OL "https://github.com/go-gorm/sqlite/raw/v1.5.5/ddlmod.go" -curl -#OL "https://github.com/go-gorm/sqlite/raw/v1.5.5/ddlmod_test.go" -curl -#OL "https://github.com/go-gorm/sqlite/raw/v1.5.5/error_translator.go" -curl -#OL "https://github.com/go-gorm/sqlite/raw/v1.5.5/migrator.go" -curl -#OL "https://github.com/go-gorm/sqlite/raw/v1.5.5/sqlite.go" -curl -#OL "https://github.com/go-gorm/sqlite/raw/v1.5.5/sqlite_test.go" \ No newline at end of file +curl -#OL "https://github.com/go-gorm/sqlite/raw/v1.5.6/ddlmod.go" +curl -#OL "https://github.com/go-gorm/sqlite/raw/v1.5.6/ddlmod_test.go" +curl -#OL "https://github.com/go-gorm/sqlite/raw/v1.5.6/error_translator.go" +curl -#OL "https://github.com/go-gorm/sqlite/raw/v1.5.6/migrator.go" +curl -#OL "https://github.com/go-gorm/sqlite/raw/v1.5.6/sqlite.go" +curl -#OL "https://github.com/go-gorm/sqlite/raw/v1.5.6/sqlite_test.go" +curl -#OL "https://github.com/go-gorm/sqlite/raw/v1.5.6/sqlite_test.go" +curl -#L "https://github.com/glebarez/sqlite/raw/v1.11.0/sqlite_error_translator_test.go" > error_translator_test.go \ No newline at end of file diff --git a/gormlite/error_translator_test.go b/gormlite/error_translator_test.go new file mode 100644 index 0000000..f205113 --- /dev/null +++ b/gormlite/error_translator_test.go @@ -0,0 +1,48 @@ +package gormlite + +import ( + "testing" + + "gorm.io/gorm" + "gorm.io/gorm/logger" +) + +func TestErrorTranslator(t *testing.T) { + // This is the DSN of the in-memory SQLite database for these tests. + const InMemoryDSN = "file:testdatabase?mode=memory&cache=shared" + + // This is the example object for testing the unique constraint error + type Article struct { + ArticleNumber string `gorm:"unique"` + } + + db, err := gorm.Open(Open(InMemoryDSN), &gorm.Config{ + Logger: logger.Default.LogMode(logger.Silent), + TranslateError: true}) + + if err != nil { + t.Errorf("Expected Open to succeed; got error: %v", err) + } + if db == nil { + t.Errorf("Expected db to be non-nil.") + } + + err = db.AutoMigrate(&Article{}) + if err != nil { + t.Errorf("Expected to migrate database models to succeed: %v", err) + } + + err = db.Create(&Article{ArticleNumber: "A00000XX"}).Error + if err != nil { + t.Errorf("Expected first create to succeed: %v", err) + } + + err = db.Create(&Article{ArticleNumber: "A00000XX"}).Error + if err == nil { + t.Errorf("Expected second create to fail.") + } + + if err != gorm.ErrDuplicatedKey { + t.Errorf("Expected error from second create to be gorm.ErrDuplicatedKey: %v", err) + } +} diff --git a/gormlite/go.mod b/gormlite/go.mod index da246c7..e797e0a 100644 --- a/gormlite/go.mod +++ b/gormlite/go.mod @@ -3,7 +3,7 @@ module github.com/ncruces/go-sqlite3/gormlite go 1.21 require ( - github.com/ncruces/go-sqlite3 v0.16.1 + github.com/ncruces/go-sqlite3 v0.16.3 gorm.io/gorm v1.25.10 ) diff --git a/gormlite/go.sum b/gormlite/go.sum index 81c189e..ed53f15 100644 --- a/gormlite/go.sum +++ b/gormlite/go.sum @@ -2,8 +2,8 @@ github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/ncruces/go-sqlite3 v0.16.1 h1:1wHv7s8y+fWK44UIliotJ42ZV41A5T0sjIAqGmnMrkc= -github.com/ncruces/go-sqlite3 v0.16.1/go.mod h1:feFXbBcbLtxNk6XWG1ROt8MS9+E45yCW3G8o4ixIqZ8= +github.com/ncruces/go-sqlite3 v0.16.3 h1:Ky0denOdmAGOoCE6lQlw6GCJNMD8gTikNWe8rpu+Gjc= +github.com/ncruces/go-sqlite3 v0.16.3/go.mod h1:sAU/vQwBmZ2hq5BlW/KTzqRFizL43bv2JQoBLgXhcMI= github.com/ncruces/julianday v1.0.0 h1:fH0OKwa7NWvniGQtxdJRxAgkBMolni2BjDHaWTxqt7M= github.com/ncruces/julianday v1.0.0/go.mod h1:Dusn2KvZrrovOMJuOt0TNXL6tB7U2E8kvza5fFc9G7g= github.com/tetratelabs/wazero v1.7.3 h1:PBH5KVahrt3S2AHgEjKu4u+LlDbbk+nsGE3KLucy6Rw= diff --git a/sqlite3/vtab.c b/sqlite3/vtab.c index 4c85cf9..9f7421a 100644 --- a/sqlite3/vtab.c +++ b/sqlite3/vtab.c @@ -159,7 +159,7 @@ static int go_vtab_integrity_wrapper(sqlite3_vtab *pVTab, const char *zSchema, return rc; } -static int go_vtab_shadown_name_wrapper(const char *zName) { return 1; } +static int go_vtab_shadown_name_wrapper(const char *zName) { return true; } int sqlite3_create_module_go(sqlite3 *db, const char *zName, int flags, go_handle handle) {