]> 127.0.0.1 Git - bili_danmu/.git/commitdiff
Improve 说明修正,测试用例
authorqydysky <qydysky@foxmail.com>
Wed, 26 Apr 2023 01:14:20 +0000 (01:14 +0000)
committerGitHub <noreply@github.com>
Wed, 26 Apr 2023 01:14:20 +0000 (01:14 +0000)
README.md
Reply/F.go
Reply/F_test.go [new file with mode: 0644]
Reply/Reply.go

index 656aaf5b77c943a2a3915c26d5bcc3c0aae542aa..21aca046a049133f4587c867c9b60bcd362e1f28 100644 (file)
--- a/README.md
+++ b/README.md
@@ -73,7 +73,7 @@
 ### 说明
 本项目使用github action自动构建,构建过程详见[yml](https://github.com/qydysky/bili_danmu/blob/master/.github/workflows/go.yml)
 
-#### 保存弹幕至db
+#### 保存弹幕至DB
 配置文件中添加配置项`保存弹幕至db`。参考以下实例:
 
 mysql:
@@ -91,7 +91,7 @@ mysql:
 
 sqlite3:
 
-注意:对不要并发连接,可能会导致失败
+注意:不要并发连接数据库,可能会导致失败
 ```json
 {
   "保存弹幕至db": {
@@ -104,7 +104,7 @@ sqlite3:
 }
 ```
 
-实例:
+数据实例:
 
 |created|createdunix|msg|color|auth|uid|roomid|
 |-------|-----------|---|-----|----|---|------|
index d75f3c06a6dac86da411ff83887c48ddc67e97d3..30eac01c04382385c62470668f28c3284f56f4e9 100644 (file)
@@ -1549,16 +1549,16 @@ func (t *DanmuReLiveTriger) Check(uid, msg string) {
        }
 }
 
-// 保存弹幕至mysql
-var saveDanmuToMysql SaveDanmuToMysql
+// 保存弹幕至db
+var saveDanmuToDB SaveDanmuToDB
 
-type SaveDanmuToMysql struct {
+type SaveDanmuToDB struct {
        db     *sql.DB
        insert string
        sync.Once
 }
 
-func (t *SaveDanmuToMysql) init(c *c.Common) {
+func (t *SaveDanmuToDB) init(c *c.Common) {
        t.Do(func() {
                if v, ok := c.K_v.LoadV(`保存弹幕至db`).(map[string]any); ok && len(v) != 0 {
                        var (
@@ -1595,7 +1595,7 @@ func (t *SaveDanmuToMysql) init(c *c.Common) {
        })
 }
 
-func (t *SaveDanmuToMysql) danmu(item Danmu_item) {
+func (t *SaveDanmuToDB) danmu(item Danmu_item) {
        if t.db == nil {
                return
        }
diff --git a/Reply/F_test.go b/Reply/F_test.go
new file mode 100644 (file)
index 0000000..5d4c51b
--- /dev/null
@@ -0,0 +1,64 @@
+package reply
+
+import (
+       "context"
+       "database/sql"
+       "errors"
+       "fmt"
+       "testing"
+
+       c "github.com/qydysky/bili_danmu/CV"
+       file "github.com/qydysky/part/file"
+       psql "github.com/qydysky/part/sqlite"
+)
+
+func TestSaveDanmuToDB(t *testing.T) {
+       var common = c.Common{}
+       common.K_v.Store(`保存弹幕至db`, map[string]any{
+               "dbname": "sqlite",
+               "url":    "danmu.sqlite3",
+               "create": "create table danmu (created text, createdunix text, msg text, color text, auth text, uid text, roomid text)",
+               "insert": "insert into danmu  values (?,?,?,?,?,?,?)",
+       })
+       saveDanmuToDB.init(&common)
+       saveDanmuToDB.danmu(Danmu_item{
+               msg:    "可能走位配合了他的压枪",
+               color:  "#54eed8",
+               auth:   "畏未",
+               uid:    "96767379",
+               roomid: 92613,
+       })
+
+       if db, e := sql.Open("sqlite", "danmu.sqlite3"); e != nil {
+               t.Fatal(e)
+       } else {
+               if e := psql.BeginTx[any](db, context.Background(), &sql.TxOptions{}).Do(psql.SqlFunc[any]{
+                       Ty:    psql.Queryf,
+                       Query: "select msg from danmu",
+                       AfterQF: func(_ *any, rows *sql.Rows, txE error) (_ *any, stopErr error) {
+                               var count = 0
+                               for rows.Next() {
+                                       count += 1
+                                       var msg string
+                                       if e := rows.Scan(&msg); e != nil {
+                                               return nil, e
+                                       }
+                                       if msg != "可能走位配合了他的压枪" {
+                                               return nil, errors.New("no msg")
+                                       }
+                               }
+                               if count != 1 {
+                                       return nil, fmt.Errorf("no count %d", count)
+                               }
+                               return nil, nil
+                       },
+               }).Fin(); e != nil {
+                       t.Fatal(e)
+               }
+               db.Close()
+       }
+
+       if e := file.New("danmu.sqlite3", 0, true).Delete(); e != nil {
+               t.Fatal(e)
+       }
+}
index 3bfc39d895cc447eb60a6ddaab4a2ef508ffe981..c1fd27b4df9c470771f4b2e463636a08539f46e8 100644 (file)
@@ -1092,9 +1092,9 @@ func (replyF) danmu(s string) {
        msglog := msglog.Log_show_control(false)
 
        { // 附加功能 弹幕机 封禁 弹幕合并
-               // 保存弹幕至sqlite
-               saveDanmuToMysql.init(c.C)
-               saveDanmuToMysql.danmu(item)
+               // 保存弹幕至db
+               saveDanmuToDB.init(c.C)
+               saveDanmuToDB.danmu(item)
                // 对指定弹幕重新录制
                danmuReLiveTriger.Init(c.C)
                danmuReLiveTriger.Check(item.uid, item.msg)