Изменено: загрузка расписания одним запросом и проверка дупликатов
This commit is contained in:
parent
160e08a52a
commit
e9cad18cb3
|
@ -5,7 +5,8 @@ import (
|
|||
"xorm.io/xorm"
|
||||
)
|
||||
|
||||
func uploadShedule(db *xorm.Engine, sh Shedule) {
|
||||
func uploadShedule(db *xorm.Engine, sh Shedule) error {
|
||||
var pairs []database.Lesson
|
||||
for _, line := range sh.Lessons {
|
||||
for _, lesson := range line {
|
||||
var pair database.Lesson
|
||||
|
@ -16,15 +17,27 @@ func uploadShedule(db *xorm.Engine, sh Shedule) {
|
|||
Type: subLesson.Type,
|
||||
Name: subLesson.Name,
|
||||
TeacherId: subLesson.TeacherId,
|
||||
Place: subLesson.Place,
|
||||
Comment: subLesson.Comment,
|
||||
SubGroup: subLesson.SubGroup,
|
||||
}
|
||||
for _, groupId := range subLesson.GroupId {
|
||||
pair.GroupId = groupId
|
||||
db.InsertOne(pair)
|
||||
var existsLessons []database.Lesson
|
||||
err := db.Find(&existsLessons, pair)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(existsLessons) == 0 {
|
||||
pair.Place = subLesson.Place
|
||||
pair.Comment = subLesson.Comment
|
||||
pair.SubGroup = subLesson.SubGroup
|
||||
pairs = append(pairs, pair)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(pairs) > 0 {
|
||||
_, err := db.Insert(pairs)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -49,5 +49,8 @@ func TestParse(t *testing.T) {
|
|||
}
|
||||
|
||||
engine := database.Connect(os.Getenv("MYSQL_USER"), os.Getenv("MYSQL_PASS"), os.Getenv("MYSQL_DB"))
|
||||
uploadShedule(engine, *shedule)
|
||||
err = uploadShedule(engine, *shedule)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
|
Reference in New Issue