From: qydysky Date: Tue, 25 Apr 2023 16:44:10 +0000 (+0800) Subject: Fix X-Git-Tag: v0.24.21 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=5847085fa8127b4722aca101281b1ad6ca39a272;p=part%2F.git Fix --- diff --git a/sqlite/Sqlite.go b/sqlite/Sqlite.go index fa0ffde..b4a6b02 100644 --- a/sqlite/Sqlite.go +++ b/sqlite/Sqlite.go @@ -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 +} diff --git a/sqlite/Sqlite_test.go b/sqlite/Sqlite_test.go index 3fabf54..930fba5 100644 --- a/sqlite/Sqlite_test.go +++ b/sqlite/Sqlite_test.go @@ -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() + } +}