ISUCON用のGo言語ユーティリティです。
go get github.com/isucon-odd/isutil
ジェネリクスを使ったキャッシュです。有効期限の設定も可能です。
package main
import (
"time"
"github.com/isucon-odd/isutil/cache"
)
func main() {
cache := cache.NewCache[string]()
cache.Set("key", "value")
cache.Get("key")
cache.Delete("key")
cache.SetWithExpiration("key", "value", time.Minute*10)
cache.GetAndDeleteExpired("key")
}
SQLクエリの実行を簡単にするためのユーティリティです。
WHERE IN句を使ったクエリを実行するためのユーティリティです。
内部でsqlx.Select
関数を使うWhereIn
と、sqlx.SelectContext
関数を使うWhereInContext
があります。これらの関数は、*sqlx.DB
と*sqlx.Tx
の両方を受け取ることができます。
package main
import (
"context"
"github.com/jmoiron/sqlx"
"github.com/isucon-odd/isutil/sqlutil"
)
type User struct {
// ...
}
func main(ctx context.Context, db *sqlx.DB, tx *sqlx.Tx) {
query := "SELECT * FROM users WHERE id IN (?)"
userIDs := []int{1, 2, 3}
users, err := WhereIn[User](db, query, userIDs)
users, err = WhereIn[User](tx, query, userIDs)
users, err = WhereInContext[User](ctx, db, query, userIDs)
users, err = WhereInContext[User](ctx, tx, query, userIDs)
}