Skip to content

Commit

Permalink
fix: update panic
Browse files Browse the repository at this point in the history
  • Loading branch information
nusr committed Mar 17, 2023
1 parent 75ee59c commit db9de4b
Show file tree
Hide file tree
Showing 15 changed files with 566 additions and 22 deletions.
31 changes: 31 additions & 0 deletions examples/update/noparams/db.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

67 changes: 67 additions & 0 deletions examples/update/noparams/db_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
//go:build examples
// +build examples

package update

import (
"context"
"testing"

"github.com/kyleconroy/sqlc/internal/sqltest"
)

func TestUpdate(t *testing.T) {
sdb, cleanup := sqltest.MySQL(t, []string{"schema.sql"})
defer cleanup()

ctx := context.Background()
db := New(sdb)

_, err := db.CreateT1(ctx, CreateT1Params{
UserID: int32(2),
Name: "",
})
if err != nil {
t.Fatal(err)
}

// get the data we just inserted
oldData, err := db.GetT1(ctx, int32(2))
if err != nil {
t.Fatal(err)
}

if oldData.Name != "" {
t.Fatal("create fail")
}

_, err = db.CreateT2(ctx, CreateT2Params{
Email: "[email protected]",
Name: "test",
})
if err != nil {
t.Fatal(err)
}

_, err = db.CreateT3(ctx, CreateT3Params{
UserID: int32(2),
Email: "[email protected]",
})
if err != nil {
t.Fatal(err)
}

err = db.UpdateAll(ctx)
if err != nil {
t.Fatal(err)
}

newData, err := db.GetT1(ctx, int32(2))
if err != nil {
t.Fatal(err)
}

if newData.Name != "test" {
t.Fatal("update fail")
}
}
22 changes: 22 additions & 0 deletions examples/update/noparams/models.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

37 changes: 37 additions & 0 deletions examples/update/noparams/query.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/* name: CreateT1 :execresult */
INSERT INTO
t1 (user_id, name)
VALUES
(?, ?);

/* name: CreateT2 :execresult */
INSERT INTO
t2 (email, name)
VALUES
(?, ?);

/* name: CreateT3 :execresult */
INSERT INTO
t3 (user_id, email)
VALUES
(?, ?);

/* name: UpdateAll :exec */
UPDATE
t1
INNER JOIN t3 ON t3.user_id = t1.user_id
INNER JOIN t2 ON t2.email = t3.email
SET
t1.name = t2.name
WHERE
t1.name = '';

/* name: GetT1 :one */
SELECT
*
FROM
t1
WHERE
user_id = ?
LIMIT
1;
93 changes: 93 additions & 0 deletions examples/update/noparams/query.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions examples/update/noparams/schema.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
CREATE TABLE t1 (
user_id int NOT NULL,
name varchar(255) NOT NULL
);

CREATE TABLE t2 (
email varchar(255) NOT NULL,
name varchar(255) NOT NULL
);

CREATE TABLE t3 (
user_id int NOT NULL,
email varchar(255) NOT NULL
);
27 changes: 27 additions & 0 deletions examples/update/sqlc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"version": "2",
"sql": [
{
"schema": "withparams/schema.sql",
"queries": "withparams/query.sql",
"engine": "mysql",
"gen": {
"go": {
"package": "update",
"out": "withparams"
}
}
},
{
"schema": "noparams/schema.sql",
"queries": "noparams/query.sql",
"engine": "mysql",
"gen": {
"go": {
"package": "update",
"out": "noparams"
}
}
}
]
}
31 changes: 31 additions & 0 deletions examples/update/withparams/db.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

62 changes: 62 additions & 0 deletions examples/update/withparams/db_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
//go:build examples
// +build examples

package update

import (
"context"
"testing"
"time"

"github.com/kyleconroy/sqlc/internal/sqltest"
)

func TestAuthor(t *testing.T) {
sdb, cleanup := sqltest.MySQL(t, []string{"schema.sql"})
defer cleanup()

ctx := context.Background()
db := New(sdb)

// create an author
result, err := db.CreateAuthor(ctx, CreateAuthorParams{
Name: "Brian Kernighan",
DeletedAt: time.Now(),
UpdatedAt: time.Now(),
})
if err != nil {
t.Fatal(err)
}
authorID, err := result.LastInsertId()
if err != nil {
t.Fatal(err)
}
t.Log(authorID)

// get the author we just inserted
fetchedAuthor, err := db.GetAuthor(ctx, authorID)
if err != nil {
t.Fatal(err)
}

// create a book
_, err = db.CreateBook(ctx, true)
if err != nil {
t.Fatal(err)
}

err = db.DeleteAuthor(ctx, "Brian Kernighan")
if err != nil {
t.Fatal(err)
}

// get the author we just inserted
newFetchedAuthor, err := db.GetAuthor(ctx, authorID)
if err != nil {
t.Fatal(err)
}
t.Log(fetchedAuthor)
if newFetchedAuthor.DeletedAt.Unix() != fetchedAuthor.DeletedAt.Unix() && newFetchedAuthor.DeletedAt.Unix() != newFetchedAuthor.UpdatedAt.Unix() {
t.Fatal("update fail")
}
}
Loading

0 comments on commit db9de4b

Please sign in to comment.