Browse Source

Fixes + insert row func tests

Volodymyr Tkach 2 years ago
parent
commit
7eba0c0166
3 changed files with 52 additions and 2 deletions
  1. 1 1
      gosql/common/dbmethods.go
  2. 1 1
      gosql/common/tx.go
  3. 50 0
      gosql/gosql_test.go

+ 1 - 1
gosql/common/dbmethods.go

@@ -94,7 +94,7 @@ func (d *DBMethods) ExecPrepared(ctx context.Context, prep *Prepared) (sql.Resul
 
 func (d *DBMethods) InsertRow(ctx context.Context, row any) error {
 	query, args := insertRowString(row)
-	_, err := d.Exec(ctx, query, args)
+	_, err := d.Exec(ctx, query, args...)
 	return err
 }
 

+ 1 - 1
gosql/common/tx.go

@@ -88,7 +88,7 @@ func (t *Tx) ExecPrepared(ctx context.Context, prep *Prepared) (sql.Result, erro
 
 func (t *Tx) InsertRow(ctx context.Context, row any) error {
 	query, args := insertRowString(row)
-	_, err := t.Exec(ctx, query, args)
+	_, err := t.Exec(ctx, query, args...)
 	return err
 }
 

+ 50 - 0
gosql/gosql_test.go

@@ -292,6 +292,56 @@ var _ = Describe("gosql", func() {
 
 				Expect(db.Close()).To(Succeed())
 			})
+
+			It("open connection, migrate and insert row", func() {
+				f, err := ioutil.TempFile("", "go-sqlite-test-")
+				Expect(err).To(Succeed())
+				f.Close()
+
+				db, err := gosql.Open("sqlite://"+f.Name(), migrationsDir, false, false)
+				Expect(err).To(Succeed())
+
+				var rowUser struct {
+					ID   int64  `field:"id" table:"users"`
+					Name string `field:"name"`
+				}
+
+				var size int
+				err = db.QueryRow(ctx, "select count(*) from users").Scan(&size)
+				Expect(err).To(Succeed())
+				Expect(size).To(Equal(2))
+
+				rowUser.Name = "James"
+				Expect(db.InsertRow(ctx, &rowUser)).To(Succeed())
+
+				err = db.QueryRow(ctx, "select count(*) from users").Scan(&size)
+				Expect(err).To(Succeed())
+				Expect(size).To(Equal(3))
+
+				rowUser.Name = "Robert"
+				Expect(db.InsertRow(ctx, &rowUser)).To(Succeed())
+
+				err = db.QueryRow(ctx, "select count(*) from users").Scan(&size)
+				Expect(err).To(Succeed())
+				Expect(size).To(Equal(4))
+
+				names := []string{}
+				err = db.Each(
+					ctx,
+					"SELECT 0, name FROM users ORDER BY name ASC",
+					func(ctx context.Context, rows *gosql.Rows) error {
+						if err := rows.Scans(&rowUser); err != nil {
+							return err
+						}
+						names = append(names, rowUser.Name)
+						return nil
+					},
+				)
+				Expect(err).To(Succeed())
+				Expect(names).To(Equal([]string{"Alice", "Bob", "James", "Robert"}))
+
+				Expect(db.Close()).To(Succeed())
+			})
 		})
 
 		It("open connection and skip migration", func() {