Изменено: загрузка расписания одним запросом и проверка дупликатов

This commit is contained in:
far-galaxy 2023-03-07 13:27:18 +04:00
parent 160e08a52a
commit e9cad18cb3
2 changed files with 22 additions and 6 deletions

View File

@ -5,7 +5,8 @@ import (
"xorm.io/xorm" "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 _, line := range sh.Lessons {
for _, lesson := range line { for _, lesson := range line {
var pair database.Lesson var pair database.Lesson
@ -16,15 +17,27 @@ func uploadShedule(db *xorm.Engine, sh Shedule) {
Type: subLesson.Type, Type: subLesson.Type,
Name: subLesson.Name, Name: subLesson.Name,
TeacherId: subLesson.TeacherId, TeacherId: subLesson.TeacherId,
Place: subLesson.Place,
Comment: subLesson.Comment,
SubGroup: subLesson.SubGroup,
} }
for _, groupId := range subLesson.GroupId { for _, groupId := range subLesson.GroupId {
pair.GroupId = 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
} }

View File

@ -49,5 +49,8 @@ func TestParse(t *testing.T) {
} }
engine := database.Connect(os.Getenv("MYSQL_USER"), os.Getenv("MYSQL_PASS"), os.Getenv("MYSQL_DB")) 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)
}
} }