importer lcw test2

This commit is contained in:
merdan 2023-02-17 11:58:25 +05:00
parent 5831ed49a5
commit 0f19fd0198
2 changed files with 88 additions and 7 deletions

View File

@ -45,7 +45,7 @@ func ParseLinkLCW(link string,w http.ResponseWriter) {
}
/////////////////////////////
importRepo, err := repositories.ImporterInstance()
importRepo, err := repositories.ParseImporterInstannce()
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
@ -54,13 +54,13 @@ func ParseLinkLCW(link string,w http.ResponseWriter) {
}
//wait until initialization data is loaded to memory
importRepo.ImportWGroup.Wait()
fmt.Println(product);
log.Println(product);
if err = importRepo.UpdateOrCreate(product).Error; err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
fmt.Println(err)
return
}
//if err = importRepo.UpdateOrCreate(product).Error; err != nil {
// http.Error(w, err.Error(), http.StatusInternalServerError)
// fmt.Println(err)
// return
//}
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(map[string]string{
"msg": "Link parsed successfully",

View File

@ -144,6 +144,87 @@ func ImporterInstance() (instance *Importer, err error) {
return instance, nil
}
func ParseImporterInstannce() (instance *Importer, err error) {
db, err := gorm.Open(mysql.Open(os.Getenv("database_url")), &gorm.Config{SkipDefaultTransaction: true})
if err != nil {
log.Println(err)
return nil, err
}
instance = &Importer{baza: db}
instance.ImportWGroup.Add(3)
//load families to memory
go func() {
defer instance.ImportWGroup.Done()
instance.families, instance.Error = gm.GetFamilies(db)
}()
//load attributes to memory
go func() {
defer instance.ImportWGroup.Done()
if attributes, err := gm.GetAttributes(db); err != nil {
instance.Error = err
return
} else {
instance.AttributesMap = make(map[string]gm.Attribute, len(attributes))
for _, attribute := range attributes {
instance.AttributesMap[attribute.Code] = attribute
}
}
if colorOptions, err := gm.GetAttrOptions(db, instance.AttributesMap["color"].ID); err != nil {
instance.Error = err
return
} else {
instance.ColorOptions = make(map[string]gm.AttributeOption, len(colorOptions))
for _, option := range colorOptions {
instance.ColorOptions[option.AdminName] = option
}
}
if sexOPtions, err := gm.GetAttrOptions(db, instance.AttributesMap["cinsiyet"].ID); err != nil {
instance.Error = err
return
} else {
instance.SexOptions = make(map[string]gm.AttributeOption, len(sexOPtions))
for _, option := range sexOPtions {
instance.SexOptions[option.AdminName] = option
}
}
}()
//load sellers to memory
go func() {
defer instance.ImportWGroup.Done()
var vendors, err = gm.GetSellers(db)
if err != nil {
instance.Error = err
return
}
//init sellers map
instance.sellers = make(map[string]gm.MarketplaceSeller, len(vendors))
for _, vendor := range vendors {
instance.sellers[vendor.Url] = vendor
}
}()
if instance.Error != nil {
log.Println(instance.Error)
return nil, instance.Error
}
return instance, nil
}
func (importer *Importer) Start() (instance *Importer) {
log.Println("Start Product delete")