Моя структура базы данных содержит следующие поля: catalog.id
, catalog.category_id
, catalog.name
и связанные с ними поля, category.name
и category.id
.
при импорте записей CSV, содержащих поля csv_category_name
и csv_catalog_name
с использованием golang, так как цикл начинается, я хочу проверить, существует ли csv_category_name
в поле category.name
и вернуть его значение для вставки в catalog.category_id
, в противном случае создайте category.name
и верните category.id
сохраните значение в памяти, чтобы его можно было вставить в catalog.cateogory_id в остальной части цикла с аналогичным условием, прежде чем цикл продолжится
я считаю, что может быть более простой путь, но с моими ограниченными знаниями в golangЯ разработал код, и я полагаю, что с вашим предложением я могу обеспечить лучший результат
package main
import (
"io"
"log"
)
func main() {
cname := models.Category{
CategoryName: c.Name, // this to be picked from loop
}
bb, err := models.CategoryByID(db, 4)
if err != nil {
cname.Save(db)
return cname
}
for {
var c CatalogCSV
//CheckorCreate when the loop starts and use the value in the rest of the loop
if err := dec.Decode(&c); err == io.EOF {
break
} else if err != nil {
log.Fatal(err)
}
a := models.Catalog{
CatalogName: c.Catalogname,
CatalogCategoryName: c.Categoryname, // This is part of the initial CSV file
CataloCategoryID: b.ID, // this is to be picked from CategoryByID
}
// save author to database
err = a.Save(db)
if err != nil {
log.Fatal(err)
}
}
}