package db import ( "context" "github.com/rs/zerolog/log" ) type CreateUserTxParams struct { CreateUserParams AfterCreate func(user User) error } type CreateUserTxResult struct { User User `json:"user"` } func (store *PostgresStore) CreateUserTx(ctx context.Context, arg CreateUserTxParams) (CreateUserTxResult, error) { var result CreateUserTxResult err := store.execTx(ctx, func(q *Queries) error { var err error result.User, err = q.CreateUser(ctx, arg.CreateUserParams) if err != nil { return err } log.Info().Msgf("user %s created successfully", result.User.Username) return arg.AfterCreate(result.User) }) return result, err }