df/bff/db/sqlc/tx_create_account.go
2023-10-02 09:59:45 +02:00

57 lines
1.5 KiB
Go

package db
import (
"context"
"database/sql"
"time"
"github.com/itsscb/df/bff/util"
)
type CreateAccountTxParams struct {
Passwordhash string `json:"passwordhash"`
PrivacyAccepted sql.NullBool `json:"privacy_accepted"`
PrivacyAcceptedDate sql.NullTime `json:"privacy_accepted_date"`
Firstname string `json:"firstname"`
Lastname string `json:"lastname"`
Birthday time.Time `json:"birthday"`
Email string `json:"email"`
Phone sql.NullString `json:"phone"`
City string `json:"city"`
Zip string `json:"zip"`
Street string `json:"street"`
Country string `json:"country"`
Creator string `json:"creator"`
}
type CreateAccountTxResult struct {
Account Account `json:"account"`
}
func (store *SQLStore) CreateAccountTx(ctx context.Context, arg CreateAccountTxParams) (Account, error) {
var result CreateAccountTxResult
var err error
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, CreateAccountParams(arg))
return err
})
return result.Account, err
}