df/bff/db/sqlc/tx_create_account.go
2023-10-19 00:28:53 +02:00

56 lines
1.1 KiB
Go

package db
import (
"context"
"database/sql"
"time"
"github.com/google/uuid"
)
type CreateAccountTxParams struct {
CreateAccountParams
AfterCreate func(Account) error
}
type CreateAccountTxResult struct {
Account Account `json:"account"`
}
func (store *SQLStore) CreateAccountTx(ctx context.Context, arg CreateAccountTxParams) (Account, error) {
var result CreateAccountTxResult
var err error
uid, _ := uuid.NewUUID()
arg.SecretKey = sql.NullString{
Valid: uid.String() != "",
String: uid.String(),
}
if arg.PrivacyAccepted.Bool && arg.PrivacyAccepted.Valid && !arg.PrivacyAcceptedDate.Valid {
arg.PrivacyAcceptedDate = sql.NullTime{
Valid: true,
Time: time.Now(),
}
}
// arg.Passwordhash, err = util.HashPassword(arg.Passwordhash)
// if err != nil {
// return Account{}, nil
// }
err = store.execTx(ctx, func(q *Queries) error {
var err error
result.Account, err = q.CreateAccount(ctx, arg.CreateAccountParams)
if err != nil {
return err
}
return arg.AfterCreate(result.Account)
})
return result.Account, err
}