]> 127.0.0.1 Git - part/.git/commitdiff
Fix v0.24.21
authorqydysky <qydysky@foxmail.com>
Tue, 25 Apr 2023 16:44:10 +0000 (00:44 +0800)
committerqydysky <qydysky@foxmail.com>
Tue, 25 Apr 2023 16:44:10 +0000 (00:44 +0800)
sqlite/Sqlite.go
sqlite/Sqlite_test.go

index fa0ffdefcfe770ce883f9a85c6daea563de08a6b..b4a6b0298c87d76f41b03b50fe3a8212cacc69bc 100644 (file)
@@ -22,6 +22,7 @@ type SqlTx[T any] struct {
        opts     *sql.TxOptions
        sqlFuncs []*SqlFunc[T]
        dataP    *T
+       fin      bool
 }
 
 type SqlFunc[T any] struct {
@@ -50,6 +51,10 @@ func (t *SqlTx[T]) Do(sqlf SqlFunc[T]) *SqlTx[T] {
 }
 
 func (t *SqlTx[T]) Fin() (e error) {
+       if t.fin {
+               return fmt.Errorf("BeginTx; [] >> fin")
+       }
+
        tx, err := t.canTx.BeginTx(t.ctx, t.opts)
        if err != nil {
                e = fmt.Errorf("BeginTx; [] >> %s", err)
@@ -112,5 +117,10 @@ func (t *SqlTx[T]) Fin() (e error) {
                        e = errors.Join(e, fmt.Errorf("Commit; [] >> %s", err))
                }
        }
+       t.fin = true
        return e
 }
+
+func IsFin[T any](t *SqlTx[T]) bool {
+       return t == nil || t.fin
+}
index 3fabf5474b5f7ac1a7be6b973f93db0fce3a1c57..930fba591eb3df64468ed3830eb39829872be58f 100644 (file)
@@ -208,3 +208,35 @@ func TestMain3(t *testing.T) {
 
        time.Sleep(time.Second)
 }
+
+func TestMain4(t *testing.T) {
+       // connect
+       db, err := sql.Open("sqlite", "test.sqlite3")
+       if err != nil {
+               t.Fatal(err)
+       }
+       defer db.Close()
+       defer file.New("test.sqlite3", 0, true).Delete()
+
+       conn, _ := db.Conn(context.Background())
+       if e := BeginTx[any](conn, context.Background(), &sql.TxOptions{}).Do(SqlFunc[any]{
+               Ty:    Execf,
+               Query: "create table log123 (msg text)",
+       }).Fin(); e != nil {
+               t.Fatal(e)
+       }
+       conn.Close()
+
+       tx1 := BeginTx[any](db, context.Background(), &sql.TxOptions{}).Do(SqlFunc[any]{
+               Ty:    Execf,
+               Query: "insert into log123 values ('1')",
+       })
+
+       if e := tx1.Fin(); e != nil {
+               t.Log(e)
+       }
+
+       if !IsFin(tx1) {
+               t.Fatal()
+       }
+}