MCPcopy Index your code
hub / github.com/TruthHun/BookStack / migrateEbook

Function migrateEbook

commands/install.go:161–198  ·  view source on GitHub ↗

电子书数据迁移

()

Source from the content-addressed store, hash-verified

159
160// 电子书数据迁移
161func migrateEbook() {
162 // 1. 查找 md_ebook 表中不存在的书籍的电子书
163 var (
164 books []models.Book
165 sqlQuery = "SELECT book_id,generate_time,book_name,identify,label,description FROM `md_books` WHERE `generate_time`>'2010' and book_id not in (select book_id from md_ebook where book_id>0 group by book_id)"
166 )
167 o := orm.NewOrm()
168 o.Raw(sqlQuery).QueryRows(&books)
169 if len(books) == 0 {
170 beego.Info("不存在需要同步的电子书数据")
171 return
172 }
173 exts := []string{".pdf", ".epub", ".mobi"}
174 for _, book := range books {
175 beego.Info("迁移书籍电子书:", book.BookName)
176 var ebooks []models.Ebook
177 bookPrefix := fmt.Sprintf("/projects/%v/books/%v", book.Identify, book.GenerateTime.Unix())
178 if utils.StoreType == utils.StoreLocal {
179 bookPrefix = "/uploads" + bookPrefix
180 }
181 ebook := models.Ebook{
182 Title: book.BookName,
183 Keywords: book.Label,
184 Description: beego.Substr(book.Description, 0, 255),
185 BookID: book.BookId,
186 Status: models.EBookStatusSuccess,
187 }
188 for _, ext := range exts {
189 ebook.Ext = ext
190 ebook.Path = bookPrefix + ext
191 ebooks = append(ebooks, ebook)
192 }
193 if _, err := o.InsertMulti(len(ebooks), &ebooks); err != nil {
194 beego.Error(err)
195 }
196 }
197 beego.Info("电子书数据同步中...")
198}

Callers 1

InstallFunction · 0.85

Calls 2

InsertMultiMethod · 0.80
appendFunction · 0.50

Tested by

no test coverage detected