I've created a series of structs based on the way I would create tables in mySQL:
type User struct {
UserID int
Email string
Password string
DateCreated time.Time
}
type Device struct {
DeviceID int
Udid string
DateCreated time.Time
DateUpdated time.Time
IntLoginTotal int
}
type DeviceInfo struct {
DeviceID int
DeviceName string
Model string
LocalizedModel string
SystemName string
SystemVersion string
Locale string
Language string
DateCreated time.Time
}
However, I have the impression that I will not be able to make requests like this, and instead I need to create a single struct that can contain an array of multiple devices (each containing an array of multiple device info records).
What is the best way to go about doing this?
In this case, just set the "Kind" as the name of the struct.
From the docs:
func NewKey(c appengine.Context, kind, stringID string, intID int64, parent *Key) *Key
NewKey creates a new key. kind cannot be empty. Either one or both of stringID and intID must be zero. If both are zero, the key returned is incomplete. parent must either be a complete key or nil.
For example to save a User.
c := appengine.NewContext(r)
u := &User{UserID: userid, Email: email, Password: password, DateCreated: datecreated}
k := datastore.NewKey(c, "User", u.UserID, 0, nil)
e := p
_, err := datastore.Put(c, k, e)
Follow the same logic to save a different struct type.
To load a user:
c := appengine.NewContext(r)
k := datastore.NewKey(c, "User", userid, 0, nil)
e := new(User)
_, err := datastore.Get(c, k, e)