-
Notifications
You must be signed in to change notification settings - Fork 66
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: add ability to unmarshall objects (#139) #140
base: main
Are you sure you want to change the base?
fix: add ability to unmarshall objects (#139) #140
Conversation
11f1506
to
ace8cf4
Compare
First of all thanks for your PR @AAA1exa8, Got an error while testing. === RUN TestSurrealDBSuite
=== RUN TestSurrealDBSuite/gorilla
=== RUN TestSurrealDBSuite/gorilla/TestConcurrentOperations
=== RUN TestSurrealDBSuite/gorilla/TestConcurrentOperations/Concurrent_select_non_existent_rows_100
=== RUN TestSurrealDBSuite/gorilla/TestConcurrentOperations/Concurrent_create_rows_100
=== RUN TestSurrealDBSuite/gorilla/TestConcurrentOperations/Concurrent_select_exist_rows_100
=== RUN TestSurrealDBSuite/gorilla/TestCreate
=== RUN TestSurrealDBSuite/gorilla/TestCreate/raw_map_works
=== RUN TestSurrealDBSuite/gorilla/TestCreate/Single_create_works
=== RUN TestSurrealDBSuite/gorilla/TestCreate/Multiple_creates_works
db_test.go:425: Creating multiple records is not supported yet
=== RUN TestSurrealDBSuite/gorilla/TestDelete
=== RUN TestSurrealDBSuite/gorilla/TestFetch
=== RUN TestSurrealDBSuite/gorilla/TestFetch/Run_fetch_for_individual_users
db_test.go:272: TODO(gh-116) Fetch unimplemented
=== RUN TestSurrealDBSuite/gorilla/TestFetch/Run_fetch_on_hardcoded_query
db_test.go:290:
Error Trace: /home/electwix/dev/test/surrealdb.go/db_test.go:290
/home/electwix/go/pkg/mod/github.com/stretchr/[email protected]/suite/suite.go:112
Error: Received unexpected error:
json: cannot unmarshal array into Go struct field RawQuery[github.com/surrealdb/surrealdb%2ego_test.testUserWithFriend[github.com/surrealdb/surrealdb%2ego_test.testUserWithFriend[interface {}]]].result of type surrealdb_test.testUserWithFriend[github.com/surrealdb/surrealdb%2ego_test.testUserWithFriend[interface {}]]
Test: TestSurrealDBSuite/gorilla/TestFetch/Run_fetch_on_hardcoded_query
db_test.go:293:
Error Trace: /home/electwix/dev/test/surrealdb.go/db_test.go:293
/home/electwix/go/pkg/mod/github.com/stretchr/[email protected]/suite/suite.go:112
Error: "[]" should have 1 item(s), but has 0
Test: TestSurrealDBSuite/gorilla/TestFetch/Run_fetch_on_hardcoded_query
=== RUN TestSurrealDBSuite/gorilla/TestFetch/Run_fetch_on_query_using_map[string]interface{}_for_thing_and_fetchString
db_test.go:298: TODO(gh-116) Fetch unimplemented
=== RUN TestSurrealDBSuite/gorilla/TestFetch/Run_fetch_on_query_using_map[string]interface{}_for_fetchString
db_test.go:308: TODO(gh-116) Fetch unimplemented
=== RUN TestSurrealDBSuite/gorilla/TestFetch/Run_fetch_on_query_using_map[string]interface{}_for_thing_or_tableName
db_test.go:324:
Error Trace: /home/electwix/dev/test/surrealdb.go/db_test.go:324
/home/electwix/go/pkg/mod/github.com/stretchr/[email protected]/suite/suite.go:112
Error: Received unexpected error:
json: cannot unmarshal array into Go struct field RawQuery[github.com/surrealdb/surrealdb%2ego_test.testUserWithFriend[github.com/surrealdb/surrealdb%2ego_test.testUserWithFriend[interface {}]]].result of type surrealdb_test.testUserWithFriend[github.com/surrealdb/surrealdb%2ego_test.testUserWithFriend[interface {}]]
Test: TestSurrealDBSuite/gorilla/TestFetch/Run_fetch_on_query_using_map[string]interface{}_for_thing_or_tableName
db_test.go:327:
Error Trace: /home/electwix/dev/test/surrealdb.go/db_test.go:327
/home/electwix/go/pkg/mod/github.com/stretchr/[email protected]/suite/suite.go:112
Error: "[]" should have 1 item(s), but has 0
Test: TestSurrealDBSuite/gorilla/TestFetch/Run_fetch_on_query_using_map[string]interface{}_for_thing_or_tableName
=== RUN TestSurrealDBSuite/gorilla/TestInsert
=== RUN TestSurrealDBSuite/gorilla/TestInsert/raw_map_works
=== RUN TestSurrealDBSuite/gorilla/TestInsert/Single_insert_works
=== RUN TestSurrealDBSuite/gorilla/TestInsert/Multiple_insert_works
=== RUN TestSurrealDBSuite/gorilla/TestLiveViaMethod
=== RUN TestSurrealDBSuite/gorilla/TestLiveViaQuery
=== RUN TestSurrealDBSuite/gorilla/TestLiveWithOptionsViaMethod
=== RUN TestSurrealDBSuite/gorilla/TestMerge
=== RUN TestSurrealDBSuite/gorilla/TestNonRowSelect
=== RUN TestSurrealDBSuite/gorilla/TestPatch
=== RUN TestSurrealDBSuite/gorilla/TestSelect
=== RUN TestSurrealDBSuite/gorilla/TestSelect/Select_many_with_table
=== RUN TestSurrealDBSuite/gorilla/TestSelect/Select_single_record
=== RUN TestSurrealDBSuite/gorilla/TestSmartMarshalQuery
=== RUN TestSurrealDBSuite/gorilla/TestSmartMarshalQuery/create_with_SmartMarshal_query
=== RUN TestSurrealDBSuite/gorilla/TestSmartMarshalQuery/select_with_SmartMarshal_query
=== RUN TestSurrealDBSuite/gorilla/TestSmartMarshalQuery/update_with_SmartMarshal_query
=== RUN TestSurrealDBSuite/gorilla/TestSmartMarshalQuery/delete_with_SmartMarshal_query
=== RUN TestSurrealDBSuite/gorilla/TestSmartMarshalQuery/check_if_data_deleted_SmartMarshal_query
=== RUN TestSurrealDBSuite/gorilla/TestSmartUnMarshalQuery
=== RUN TestSurrealDBSuite/gorilla/TestSmartUnMarshalQuery/raw_create_query
db_test.go:645:
Error Trace: /home/electwix/dev/test/surrealdb.go/db_test.go:645
/home/electwix/go/pkg/mod/github.com/stretchr/[email protected]/suite/suite.go:112
Error: Received unexpected error:
json: cannot unmarshal array into Go struct field RawQuery[github.com/surrealdb/surrealdb%2ego_test.testUser].result of type surrealdb_test.testUser
Test: TestSurrealDBSuite/gorilla/TestSmartUnMarshalQuery/raw_create_query
=== RUN TestSurrealDBSuite/gorilla/TestSmartUnMarshalQuery/raw_select_query
db_test.go:655:
Error Trace: /home/electwix/dev/test/surrealdb.go/db_test.go:655
/home/electwix/go/pkg/mod/github.com/stretchr/[email protected]/suite/suite.go:112
Error: Received unexpected error:
json: cannot unmarshal array into Go struct field RawQuery[github.com/surrealdb/surrealdb%2ego_test.testUser].result of type surrealdb_test.testUser
Test: TestSurrealDBSuite/gorilla/TestSmartUnMarshalQuery/raw_select_query
=== RUN TestSurrealDBSuite/gorilla/TestSmartUnMarshalQuery/select_query
--- FAIL: TestSurrealDBSuite (0.28s)
--- FAIL: TestSurrealDBSuite/gorilla (0.28s)
--- PASS: TestSurrealDBSuite/gorilla/TestConcurrentOperations (0.14s)
--- PASS: TestSurrealDBSuite/gorilla/TestConcurrentOperations/Concurrent_select_non_existent_rows_100 (0.04s)
--- PASS: TestSurrealDBSuite/gorilla/TestConcurrentOperations/Concurrent_create_rows_100 (0.05s)
--- PASS: TestSurrealDBSuite/gorilla/TestConcurrentOperations/Concurrent_select_exist_rows_100 (0.04s)
--- PASS: TestSurrealDBSuite/gorilla/TestCreate (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestCreate/raw_map_works (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestCreate/Single_create_works (0.00s)
--- SKIP: TestSurrealDBSuite/gorilla/TestCreate/Multiple_creates_works (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestDelete (0.00s)
--- FAIL: TestSurrealDBSuite/gorilla/TestFetch (0.00s)
--- SKIP: TestSurrealDBSuite/gorilla/TestFetch/Run_fetch_for_individual_users (0.00s)
--- FAIL: TestSurrealDBSuite/gorilla/TestFetch/Run_fetch_on_hardcoded_query (0.00s)
--- SKIP: TestSurrealDBSuite/gorilla/TestFetch/Run_fetch_on_query_using_map[string]interface{}_for_thing_and_fetchString (0.00s)
--- SKIP: TestSurrealDBSuite/gorilla/TestFetch/Run_fetch_on_query_using_map[string]interface{}_for_fetchString (0.00s)
--- FAIL: TestSurrealDBSuite/gorilla/TestFetch/Run_fetch_on_query_using_map[string]interface{}_for_thing_or_tableName (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestInsert (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestInsert/raw_map_works (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestInsert/Single_insert_works (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestInsert/Multiple_insert_works (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestLiveViaMethod (0.04s)
--- PASS: TestSurrealDBSuite/gorilla/TestLiveViaQuery (0.04s)
--- PASS: TestSurrealDBSuite/gorilla/TestLiveWithOptionsViaMethod (0.04s)
--- PASS: TestSurrealDBSuite/gorilla/TestMerge (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestNonRowSelect (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestPatch (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestSelect (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestSelect/Select_many_with_table (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestSelect/Select_single_record (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestSmartMarshalQuery (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestSmartMarshalQuery/create_with_SmartMarshal_query (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestSmartMarshalQuery/select_with_SmartMarshal_query (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestSmartMarshalQuery/update_with_SmartMarshal_query (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestSmartMarshalQuery/delete_with_SmartMarshal_query (0.00s)
--- PASS: TestSurrealDBSuite/gorilla/TestSmartMarshalQuery/check_if_data_deleted_SmartMarshal_query (0.00s)
--- FAIL: TestSurrealDBSuite/gorilla/TestSmartUnMarshalQuery (0.00s)
--- FAIL: TestSurrealDBSuite/gorilla/TestSmartUnMarshalQuery/raw_create_query (0.00s)
--- FAIL: TestSurrealDBSuite/gorilla/TestSmartUnMarshalQuery/raw_select_query (0.00s)
--- FAIL: TestSurrealDBSuite/gorilla/TestSmartUnMarshalQuery/select_query (0.00s)
panic: runtime error: index out of range [0] with length 0 [recovered]
panic: runtime error: index out of range [0] with length 0
goroutine 801 [running]:
testing.tRunner.func1.2({0x87a880, 0xc0000ca108})
/usr/lib/go/src/testing/testing.go:1631 +0x24a
testing.tRunner.func1()
/usr/lib/go/src/testing/testing.go:1634 +0x377
panic({0x87a880?, 0xc0000ca108?})
/usr/lib/go/src/runtime/panic.go:770 +0x132
github.com/surrealdb/surrealdb%2ego_test.(*SurrealDBTestSuite).TestSmartUnMarshalQuery.func3()
/home/electwix/dev/test/surrealdb.go/db_test.go:663 +0x16c
github.com/stretchr/testify/suite.(*Suite).Run.func2(0xc0001124e0?)
/home/electwix/go/pkg/mod/github.com/stretchr/[email protected]/suite/suite.go:112 +0x30
testing.tRunner(0xc0001124e0, 0xc000792ca8)
/usr/lib/go/src/testing/testing.go:1689 +0xfb
created by testing.(*T).Run in goroutine 796
/usr/lib/go/src/testing/testing.go:1742 +0x390
exit status 2
FAIL github.com/surrealdb/surrealdb.go 0.289s
|
sorry about that I amended the commit and now it should work just fine |
Yes, it is working fine right now. PR LGTM. @timpratim, @phughk What do you think? |
I am fairly detached from this, but isn't this beating around the eternal problem of "lists are objects" and "a list of 1 object can be considered an object"? Why can't this be a list of 1? |
Yeah, but we don't have objects in golang so in that sense we expected an array but didn't get it. Normally when we do |
Fixes #139
This PR makes it possible to unmarshall queries returning objects
currently query like this
is unmarshalled to this type
even tought the return type of the query is array
and query like this
is impossible to unmarshall with UnmarshalRaw.
This PR chanes it that the first query is unmarshalled to
and the second one to