// getAttributeValuesForWebsites creates a map where the key is the attribute ID and // each part of the StringEntities slice are the full attribute values for a website ID. func getAttributeValuesForWebsites(ctx *context) map[string][]codegen.StringEntities { var tws store.TableWebsiteSlice tws.Load(ctx.dbrConn.NewSession(nil), func(sb *dbr.SelectBuilder) *dbr.SelectBuilder { return sb.Where("website_id > 0") }) // key contains the attributeID as a string var aws = make(map[string][]codegen.StringEntities) tew, err := ctx.aat.TableEavWebsite() codegen.LogFatal(err) if tew != nil { // only for those who have a wbesite specific table for _, w := range tws { aCollection, err := codegen.LoadStringEntities(ctx.db, getAttrSelect(ctx, w.WebsiteID)) codegen.LogFatal(err) for _, row := range aCollection { if aid, ok := row["attribute_id"]; ok { if nil == aws[aid] { aws[aid] = make([]codegen.StringEntities, 0, 200) // up to 200 websites at once } aws[aid] = append(aws[aid], row) } else { codegen.LogFatal(errgo.Newf("Column attribute_id not found in collection %#v\n", aCollection)) } } } } return aws }
func TestTableWebsiteSliceLoad(t *testing.T) { db := csdb.MustConnectTest() defer db.Close() dbrSess := dbr.NewConnection(db, nil).NewSession(nil) var websites store.TableWebsiteSlice websites.Load(dbrSess) assert.True(t, websites.Len() > 2) for _, s := range websites { assert.True(t, len(s.Code.String) > 1) } }