chat_sensitive_words_model.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package model
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "strings"
  6. "github.com/tal-tech/go-zero/core/stores/builder"
  7. "github.com/tal-tech/go-zero/core/stores/sqlc"
  8. "github.com/tal-tech/go-zero/core/stores/sqlx"
  9. "github.com/tal-tech/go-zero/core/stringx"
  10. )
  11. var (
  12. chatSensitiveWordsFieldNames = builder.RawFieldNames(&ChatSensitiveWords{})
  13. chatSensitiveWordsRows = strings.Join(chatSensitiveWordsFieldNames, ",")
  14. chatSensitiveWordsRowsExpectAutoSet = strings.Join(stringx.Remove(chatSensitiveWordsFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
  15. chatSensitiveWordsRowsWithPlaceHolder = strings.Join(stringx.Remove(chatSensitiveWordsFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
  16. )
  17. type (
  18. ChatSensitiveWordsModel interface {
  19. Insert(data *ChatSensitiveWords) (sql.Result, error)
  20. FindOne(id int64) (*ChatSensitiveWords, error)
  21. FindOneByWord(word string) (*ChatSensitiveWords, error)
  22. Update(data *ChatSensitiveWords) error
  23. Delete(id int64) error
  24. FindAll() (*[]ChatSensitiveWords, error)
  25. }
  26. defaultChatSensitiveWordsModel struct {
  27. conn sqlx.SqlConn
  28. table string
  29. }
  30. ChatSensitiveWords struct {
  31. Id int64 `db:"id"`
  32. Word string `db:"word"`
  33. AddType int64 `db:"add_type"`
  34. }
  35. )
  36. func NewChatSensitiveWordsModel(conn sqlx.SqlConn) ChatSensitiveWordsModel {
  37. return &defaultChatSensitiveWordsModel{
  38. conn: conn,
  39. table: "`chat_sensitive_words`",
  40. }
  41. }
  42. func (m *defaultChatSensitiveWordsModel) Insert(data *ChatSensitiveWords) (sql.Result, error) {
  43. query := fmt.Sprintf("insert into %s (%s) values (?, ?)", m.table, chatSensitiveWordsRowsExpectAutoSet)
  44. ret, err := m.conn.Exec(query, data.Word, data.AddType)
  45. return ret, err
  46. }
  47. func (m *defaultChatSensitiveWordsModel) FindOne(id int64) (*ChatSensitiveWords, error) {
  48. query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", chatSensitiveWordsRows, m.table)
  49. var resp ChatSensitiveWords
  50. err := m.conn.QueryRow(&resp, query, id)
  51. switch err {
  52. case nil:
  53. return &resp, nil
  54. case sqlc.ErrNotFound:
  55. return nil, ErrNotFound
  56. default:
  57. return nil, err
  58. }
  59. }
  60. func (m *defaultChatSensitiveWordsModel) FindOneByWord(word string) (*ChatSensitiveWords, error) {
  61. var resp ChatSensitiveWords
  62. query := fmt.Sprintf("select %s from %s where `word` = ? limit 1", chatSensitiveWordsRows, m.table)
  63. err := m.conn.QueryRow(&resp, query, word)
  64. switch err {
  65. case nil:
  66. return &resp, nil
  67. case sqlc.ErrNotFound:
  68. return nil, ErrNotFound
  69. default:
  70. return nil, err
  71. }
  72. }
  73. func (m *defaultChatSensitiveWordsModel) Update(data *ChatSensitiveWords) error {
  74. query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, chatSensitiveWordsRowsWithPlaceHolder)
  75. _, err := m.conn.Exec(query, data.Word, data.AddType, data.Id)
  76. return err
  77. }
  78. func (m *defaultChatSensitiveWordsModel) Delete(id int64) error {
  79. query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
  80. _, err := m.conn.Exec(query, id)
  81. return err
  82. }
  83. func (m *defaultChatSensitiveWordsModel) FindAll() (*[]ChatSensitiveWords, error) {
  84. words := make([]ChatSensitiveWords, 0)
  85. querySql := fmt.Sprintf("select %s from %s", chatSensitiveWordsRows, m.table)
  86. err := m.conn.QueryRows(&words, querySql)
  87. if err != nil {
  88. if err == sqlx.ErrNotFound {
  89. return nil, ErrNotFound
  90. }
  91. return nil, err
  92. }
  93. return &words, err
  94. }