彻底删除书籍.
(id int)
| 304 | |
| 305 | // 彻底删除书籍. |
| 306 | func (m *Book) ThoroughDeleteBook(id int) (err error) { |
| 307 | if id <= 0 { |
| 308 | return ErrInvalidParameter |
| 309 | } |
| 310 | |
| 311 | o := orm.NewOrm() |
| 312 | |
| 313 | m.BookId = id |
| 314 | if err = o.Read(m); err != nil { |
| 315 | return err |
| 316 | } |
| 317 | |
| 318 | var ( |
| 319 | docs []Document |
| 320 | docId []string |
| 321 | ) |
| 322 | |
| 323 | o.QueryTable(new(Document)).Filter("book_id", id).Limit(10000).All(&docs, "document_id") |
| 324 | if len(docs) > 0 { |
| 325 | for _, doc := range docs { |
| 326 | docId = append(docId, strconv.Itoa(doc.DocumentId)) |
| 327 | } |
| 328 | } |
| 329 | |
| 330 | o.Begin() |
| 331 | |
| 332 | //删除md_document_store中的文档 |
| 333 | if len(docId) > 0 { |
| 334 | sql1 := fmt.Sprintf("delete from md_document_store where document_id in(%v)", strings.Join(docId, ",")) |
| 335 | if _, err1 := o.Raw(sql1).Exec(); err1 != nil { |
| 336 | o.Rollback() |
| 337 | return err1 |
| 338 | } |
| 339 | } |
| 340 | |
| 341 | sql2 := "DELETE FROM " + NewDocument().TableNameWithPrefix() + " WHERE book_id = ?" |
| 342 | _, err = o.Raw(sql2, m.BookId).Exec() |
| 343 | if err != nil { |
| 344 | o.Rollback() |
| 345 | return err |
| 346 | } |
| 347 | sql3 := "DELETE FROM " + m.TableNameWithPrefix() + " WHERE book_id = ?" |
| 348 | |
| 349 | _, err = o.Raw(sql3, m.BookId).Exec() |
| 350 | if err != nil { |
| 351 | o.Rollback() |
| 352 | return err |
| 353 | } |
| 354 | |
| 355 | sql4 := "DELETE FROM " + NewRelationship().TableNameWithPrefix() + " WHERE book_id = ?" |
| 356 | _, err = o.Raw(sql4, m.BookId).Exec() |
| 357 | |
| 358 | if err != nil { |
| 359 | o.Rollback() |
| 360 | return err |
| 361 | } |
| 362 | |
| 363 | if m.Label != "" { |
no test coverage detected