You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
UPDATE - looks like collections of UDT-s are not supported, as I was able to get it working with list or map<text, text> fields instead.
I have a schema defined like this (omitted some fields for simplicity):
CREATE TYPE IF NOT EXISTS firewire.address (
addressline text,
city text,
state text,
zipcode text
);
CREATE TABLE IF NOT EXISTS firewire.card_by_customer (
identitykey text,
firstname text static,
lastname text static,
createdate timestamp,
addresses map<text, frozen<address>> static,
accountid text,
// additional fields
. . .
PRIMARY KEY (identitykey, accountid)
) WITH CLUSTERING ORDER BY (accountid ASC);
// Generic initialization of gocql
cluster := gocql.NewCluster(hosts...)
cluster.Keyspace = keyspaceName
cluster.Consistency = gocql.Quorum
session, err := cluster.CreateSession()
if err != nil {
log.Fatalln("Unable to open up a session with the Cassandra database (err=" + err.Error() + ")")
}
defer session.Close()
// Tell gocqltable to use this session object as the default for new objects
gocqltable.SetDefaultSession(session)
// Set the current keyspace
keyspace = gocqltable.NewKeyspace(keyspaceName)`
Creating records into Cassandra works just fine:
newEntry := CardByCustomer{
IdentityKey: identityKey,
FirstName: "Isaak",
. . .
}
accountTable := EntityTable{
recipes.CRUD{ // EXAMPLE
keyspace.NewTable(
"card_by_customer", // The table name
[]string{"identitykey"}, // Row keys
nil, // Range keys
CardByCustomer{}, // We pass an instance of the CardByCustomer struct that will be used as a type template during fetches.
),
},
}
err := accountTable.Insert(newEntry)
if err != nil {
log.Fatalln(err)
}
But then I am trying retrieve single record or all records I am getting this:
Retrieving all records
panic: reflect.Set: value of type map[string]map[string]interface {} is not assignable to type map[string]main.Address
goroutine 85 [running]:
panic(0x22f440, 0xc42016d6b0)
/usr/local/go/src/runtime/panic.go:500 +0x1a1
reflect.Value.assignTo(0xc420174cc0, 0xc42017ed20, 0x15, 0x283a59, 0xb, 0x240080, 0x0, 0xc42004fd78, 0xc420174cc0, 0xc42017ed20)
/usr/local/go/src/reflect/value.go:2163 +0x35c
reflect.Value.Set(0x240080, 0xc420184f00, 0x195, 0xc420174cc0, 0xc42017ed20, 0x15)
/usr/local/go/src/reflect/value.go:1333 +0xa4
github.com/kristoiv/gocqltable/reflect.MapToStruct(0xc42004fd78, 0x225040, 0xc420184ea0, 0x225040, 0xc420184ea0)
/Users/ggevorgyan/git/go/src/github.com/kristoiv/gocqltable/reflect/reflect.go:50 +0x31a
github.com/kristoiv/gocqltable.(*Iterator).Next(0xc42016f280, 0xc4200198d0, 0xdef75)
/Users/ggevorgyan/git/go/src/github.com/kristoiv/gocqltable/query.go:58 +0x160
github.com/kristoiv/gocqltable.(*Iterator).Range.func1(0xc42016f280, 0xc420174c00, 0xc420174c60)
/Users/ggevorgyan/git/go/src/github.com/kristoiv/gocqltable/query.go:69 +0x40
created by github.com/kristoiv/gocqltable.(*Iterator).Range
/Users/ggevorgyan/git/go/src/github.com/kristoiv/gocqltable/query.go:81 +0xac
I have tried to change my model using different approaches, but I need the built-in collection types, otherwise the model does not reflect what I need this for.
Thanks in advance
The text was updated successfully, but these errors were encountered:
UPDATE - looks like collections of UDT-s are not supported, as I was able to get it working with list or map<text, text> fields instead.
I have a schema defined like this (omitted some fields for simplicity):
And appropriate Golang structs defined as:
Code to initialize gocql and gocqltable:
Creating records into Cassandra works just fine:
But then I am trying retrieve single record or all records I am getting this:
I have tried to change my model using different approaches, but I need the built-in collection types, otherwise the model does not reflect what I need this for.
Thanks in advance
The text was updated successfully, but these errors were encountered: