audio_text.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. package models
  2. import (
  3. "fmt"
  4. "gorm.io/gorm"
  5. "speechAnalysis/pkg/mysqlx"
  6. )
  7. type (
  8. // AudioText 音频文本
  9. AudioText struct {
  10. gorm.Model
  11. AudioID uint `gorm:"unique;type:int;not null;default:0;comment:音频id" json:"audioID"` // 音频id
  12. AudioText string `json:"audioText"` // 音频文本
  13. }
  14. AudioTextSearch struct {
  15. AudioText
  16. Order string
  17. PageNum int
  18. PageSize int
  19. Orm *gorm.DB
  20. AudioIDs []uint
  21. }
  22. )
  23. func (slf *AudioText) TableName() string {
  24. return "audio_text"
  25. }
  26. func NewAudioTextSearch() *AudioTextSearch {
  27. return &AudioTextSearch{Orm: mysqlx.GetDB()}
  28. }
  29. func (slf *AudioTextSearch) SetOrm(tx *gorm.DB) *AudioTextSearch {
  30. slf.Orm = tx
  31. return slf
  32. }
  33. func (slf *AudioTextSearch) SetPage(page, size int) *AudioTextSearch {
  34. slf.PageNum, slf.PageSize = page, size
  35. return slf
  36. }
  37. func (slf *AudioTextSearch) SetOrder(order string) *AudioTextSearch {
  38. slf.Order = order
  39. return slf
  40. }
  41. func (slf *AudioTextSearch) SetAudioID(id uint) *AudioTextSearch {
  42. slf.AudioID = id
  43. return slf
  44. }
  45. func (slf *AudioTextSearch) SetAudioIDs(ids []uint) *AudioTextSearch {
  46. slf.AudioIDs = ids
  47. return slf
  48. }
  49. func (slf *AudioTextSearch) build() *gorm.DB {
  50. var db = slf.Orm.Table(slf.TableName())
  51. if slf.AudioID != 0 {
  52. db = db.Where("audio_id = ?", slf.AudioID)
  53. }
  54. if slf.Order != "" {
  55. db = db.Order(slf.Order)
  56. }
  57. if len(slf.AudioIDs) > 0 {
  58. db = db.Where("audio_id in ?", slf.AudioIDs)
  59. }
  60. return db
  61. }
  62. // Create 单条插入
  63. func (slf *AudioTextSearch) Create(record *AudioText) error {
  64. var db = slf.build()
  65. if err := db.Create(record).Error; err != nil {
  66. return fmt.Errorf("create err: %v, record: %+v", err, record)
  67. }
  68. return nil
  69. }
  70. // CreateBatch 批量插入
  71. func (slf *AudioTextSearch) CreateBatch(records []*AudioText) error {
  72. var db = slf.build()
  73. if err := db.Create(&records).Error; err != nil {
  74. return fmt.Errorf("create batch err: %v, records: %+v", err, records)
  75. }
  76. return nil
  77. }
  78. func (slf *AudioTextSearch) Save(record *AudioText) error {
  79. var db = slf.build()
  80. if err := db.Save(record).Error; err != nil {
  81. return fmt.Errorf("save err: %v, record: %+v", err, record)
  82. }
  83. return nil
  84. }
  85. func (slf *AudioTextSearch) UpdateByMap(upMap map[string]interface{}) error {
  86. var (
  87. db = slf.build()
  88. )
  89. if err := db.Updates(upMap).Error; err != nil {
  90. return fmt.Errorf("update by map err: %v, upMap: %+v", err, upMap)
  91. }
  92. return nil
  93. }
  94. func (slf *AudioTextSearch) UpdateByQuery(query string, args []interface{}, upMap map[string]interface{}) error {
  95. var (
  96. db = slf.Orm.Table(slf.TableName()).Where(query, args...)
  97. )
  98. if err := db.Updates(upMap).Error; err != nil {
  99. return fmt.Errorf("update by query err: %v, query: %s, args: %+v, upMap: %+v", err, query, args, upMap)
  100. }
  101. return nil
  102. }
  103. func (slf *AudioTextSearch) Delete() error {
  104. var db = slf.build()
  105. if err := db.Delete(&AudioText{}).Error; err != nil {
  106. return err
  107. }
  108. return nil
  109. }
  110. func (slf *AudioTextSearch) First() (*AudioText, error) {
  111. var (
  112. record = new(AudioText)
  113. db = slf.build()
  114. )
  115. if err := db.First(record).Error; err != nil {
  116. return record, err
  117. }
  118. return record, nil
  119. }
  120. func (slf *AudioTextSearch) Find() ([]*AudioText, int, error) {
  121. var (
  122. records = make([]*AudioText, 0)
  123. total int64
  124. db = slf.build()
  125. )
  126. if err := db.Count(&total).Error; err != nil {
  127. return records, int(total), fmt.Errorf("find count err: %v", err)
  128. }
  129. if slf.PageNum*slf.PageSize > 0 {
  130. db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
  131. }
  132. if err := db.Find(&records).Error; err != nil {
  133. return records, int(total), fmt.Errorf("find records err: %v", err)
  134. }
  135. return records, int(total), nil
  136. }
  137. func (slf *AudioTextSearch) FindNotTotal() ([]*AudioText, error) {
  138. var (
  139. records = make([]*AudioText, 0)
  140. db = slf.build()
  141. )
  142. if slf.PageNum*slf.PageSize > 0 {
  143. db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
  144. }
  145. if err := db.Find(&records).Error; err != nil {
  146. return records, fmt.Errorf("find records err: %v", err)
  147. }
  148. return records, nil
  149. }
  150. // FindByQuery 指定条件查询.
  151. func (slf *AudioTextSearch) FindByQuery(query string, args []interface{}) ([]*AudioText, int64, error) {
  152. var (
  153. records = make([]*AudioText, 0)
  154. total int64
  155. db = slf.Orm.Table(slf.TableName()).Where(query, args...)
  156. )
  157. if err := db.Count(&total).Error; err != nil {
  158. return records, total, fmt.Errorf("find by query count err: %v", err)
  159. }
  160. if slf.PageNum*slf.PageSize > 0 {
  161. db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
  162. }
  163. if err := db.Find(&records).Error; err != nil {
  164. return records, total, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
  165. }
  166. return records, total, nil
  167. }
  168. // FindAll 指定条件查询&不分页.
  169. func (slf *AudioTextSearch) FindAll(query string, args []interface{}) ([]*AudioText, error) {
  170. var (
  171. records = make([]*AudioText, 0)
  172. db = slf.Orm.Table(slf.TableName()).Where(query, args...)
  173. )
  174. if err := db.Find(&records).Error; err != nil {
  175. return records, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
  176. }
  177. return records, nil
  178. }
  179. //// InitDefaultData 初始化数据
  180. //func (slf *AudioTextSearch) InitDefaultData() error {
  181. // var (
  182. // db = slf.Orm.Table(slf.TableName())
  183. // total int64 = 0
  184. // )
  185. // if err := db.Count(&total).Error; err != nil {
  186. // return err
  187. // }
  188. // if total != 0 {
  189. // return nil
  190. // }
  191. // AudioTexts := make([]*AudioText, 0, 3)
  192. // AudioTexts = append(AudioTexts, &AudioText{Name: "财务部", Number: "cwb"})
  193. // return slf.CreateBatch(AudioTexts)
  194. //}