Update

SQLのUPDATE文はgenorm.Update関数を用いて実行できます。

genorm.Update関数で始まり、DoDoCtxのいずれかで終わる必要がありますが、それ以外の順番は入れ替えても問題ありません。ただし、同一のメソッドチェーン内で2度OrderBy以外の同じメソッドを実行した場合、実行時にDoDoCtxがクエリを実行せずにエラーを返します。

// UPDATE `users` SET `name`="name"
affectedRows, err = genorm.
    Update(orm.User()).
    Set(
        genorm.AssignLit(user.Name, genorm.Wrap("name")),
    ).
    Do(db)

// UPDATE `users` SET `name`="name"
affectedRows, err = genorm.
    Update(orm.User()).
    Set(
        genorm.AssignLit(user.Name, genorm.Wrap("name")),
    ).
    DoCtx(context.Background(), db)

// UPDATE `users` SET `name`="name" WHERE `id`={{uuid.New()}} 
affectedRows, err = genorm.
    Update(orm.User()).
    Set(
        genorm.AssignLit(user.Name, genorm.Wrap("name")),
    ).
    Where(genorm.EqLit(user.IDExpr, uuid.New())).
    Do(db)

// UPDATE `users` SET `name`="name" ORDER BY `created_at` LIMIT 1
affectedRows, err = genorm.
    Update(orm.User()).
    Set(
        genorm.AssignLit(user.Name, genorm.Wrap("name")),
    ).
    OrderBy(genorm.Desc, user.CreatedAt).
    Limit(1).
    Do(db)

// UPDATE `users` INNER JOIN `messages` ON `users.id` = `messages`.`id` SET `content`="hello world"
userIDColumn := orm.MessageUserParseExpr(user.ID)
messageUserIDColumn := orm.MessageUserParseExpr(message.UserID)
messageContent := orm.MessageUserParse(message.Content)
affectedRows, err := genorm.
  Update(orm.User().
        Message().Join(genorm.Eq(userID, messageUserID))).
  Set(genorm.AssignLit(messageContent, genorm.Wrap("hello world"))).
  Do(db)

Update

UPDATE文を発行するメソッドチェーンを開始する関数です。第1引数にCLIにより生成されたテーブルを受け取ります。

Set(required)

UPDATEで値を更新するカラムを値の組みを設定します。引数には可変長の*TableAssignExpr[T]型を受け取ります。*TableAssignExpr[T]型の値はgenorm.Assign関数またはgenorm.AssignLit関数の返り値として得られます。

Where(optional)

UPDATE文にWHERE句を設定します。第1引数にGo言語でのboolに対応するexpressionを受け取ります。

Do

クエリを実行し、メソッドチェーンを終了します。引数には*sql.DB/*sql.Txを含むgenorm.DBinterfaceを満たす値を受け取り、これを使用してクエリを実行します。

DoCtx

クエリを実行し、メソッドチェーンを終了します。第二引数には*sql.DB/*sql.Txを含むgenorm.DBinterfaceを満たす値を受け取り、これを使用してクエリを実行します。また、第一引数でcontext.Contextを受け取ります。contextがキャンセルされるとデータベースとのコネクションが解放され、無駄なコネクションの使用を防げます。

results matching ""

    No results matching ""