ft/adds payment
This commit is contained in:
parent
857380655b
commit
f71f1b925b
47
db/query/payment.sql
Normal file
47
db/query/payment.sql
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
-- name: GetPayment :one
|
||||||
|
SELECT * FROM payments
|
||||||
|
WHERE "ID" = $1 LIMIT 1;
|
||||||
|
|
||||||
|
-- name: CreatePayment :one
|
||||||
|
INSERT INTO payments (
|
||||||
|
"customerID",
|
||||||
|
"paymentCategory",
|
||||||
|
bankname,
|
||||||
|
"IBAN",
|
||||||
|
"BIC",
|
||||||
|
"paypalAccount",
|
||||||
|
"paypalID",
|
||||||
|
"paymentSystem",
|
||||||
|
"type",
|
||||||
|
creator,
|
||||||
|
changer
|
||||||
|
) VALUES (
|
||||||
|
$1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11
|
||||||
|
) RETURNING *;
|
||||||
|
|
||||||
|
-- name: ListPayments :many
|
||||||
|
SELECT * FROM payments
|
||||||
|
ORDER BY "paymentCategory"
|
||||||
|
LIMIT $1
|
||||||
|
OFFSET $2;
|
||||||
|
|
||||||
|
-- name: UpdatePayment :one
|
||||||
|
UPDATE payments
|
||||||
|
SET
|
||||||
|
"customerID" = COALESCE(sqlc.narg(customerID), "customerID"),
|
||||||
|
"paymentCategory" = COALESCE(sqlc.narg(paymentCategory), "paymentCategory"),
|
||||||
|
bankname = COALESCE(sqlc.narg(bankname), bankname),
|
||||||
|
"IBAN" = COALESCE(sqlc.narg(IBAN), "IBAN"),
|
||||||
|
"BIC" = COALESCE(sqlc.narg(BIC), "BIC"),
|
||||||
|
"paypalAccount" = COALESCE(sqlc.narg(paypalAccount), "paypalAccount"),
|
||||||
|
"paypalID" = COALESCE(sqlc.narg(paypalID), "paypalID"),
|
||||||
|
"paymentSystem" = COALESCE(sqlc.narg(paymentSystem), "paymentSystem"),
|
||||||
|
"type" = COALESCE(sqlc.narg(type), "type"),
|
||||||
|
changer = $2,
|
||||||
|
changed = now()
|
||||||
|
WHERE "ID" = $1
|
||||||
|
RETURNING *;
|
||||||
|
|
||||||
|
-- name: DeletePayment :exec
|
||||||
|
DELETE FROM payments
|
||||||
|
WHERE "ID" = $1;
|
230
db/sqlc/payment.sql.go
Normal file
230
db/sqlc/payment.sql.go
Normal file
@ -0,0 +1,230 @@
|
|||||||
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// sqlc v1.21.0
|
||||||
|
// source: payment.sql
|
||||||
|
|
||||||
|
package db
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"database/sql"
|
||||||
|
)
|
||||||
|
|
||||||
|
const createPayment = `-- name: CreatePayment :one
|
||||||
|
INSERT INTO payments (
|
||||||
|
"customerID",
|
||||||
|
"paymentCategory",
|
||||||
|
bankname,
|
||||||
|
"IBAN",
|
||||||
|
"BIC",
|
||||||
|
"paypalAccount",
|
||||||
|
"paypalID",
|
||||||
|
"paymentSystem",
|
||||||
|
"type",
|
||||||
|
creator,
|
||||||
|
changer
|
||||||
|
) VALUES (
|
||||||
|
$1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11
|
||||||
|
) RETURNING "ID", "customerID", "paymentCategory", bankname, "IBAN", "BIC", "paypalAccount", "paypalID", "paymentSystem", type, creator, created, changer, changed
|
||||||
|
`
|
||||||
|
|
||||||
|
type CreatePaymentParams struct {
|
||||||
|
CustomerID int64 `json:"customerID"`
|
||||||
|
PaymentCategory string `json:"paymentCategory"`
|
||||||
|
Bankname sql.NullString `json:"bankname"`
|
||||||
|
IBAN sql.NullString `json:"IBAN"`
|
||||||
|
BIC sql.NullString `json:"BIC"`
|
||||||
|
PaypalAccount sql.NullString `json:"paypalAccount"`
|
||||||
|
PaypalID sql.NullString `json:"paypalID"`
|
||||||
|
PaymentSystem sql.NullString `json:"paymentSystem"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
Creator string `json:"creator"`
|
||||||
|
Changer string `json:"changer"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) CreatePayment(ctx context.Context, arg CreatePaymentParams) (Payment, error) {
|
||||||
|
row := q.db.QueryRowContext(ctx, createPayment,
|
||||||
|
arg.CustomerID,
|
||||||
|
arg.PaymentCategory,
|
||||||
|
arg.Bankname,
|
||||||
|
arg.IBAN,
|
||||||
|
arg.BIC,
|
||||||
|
arg.PaypalAccount,
|
||||||
|
arg.PaypalID,
|
||||||
|
arg.PaymentSystem,
|
||||||
|
arg.Type,
|
||||||
|
arg.Creator,
|
||||||
|
arg.Changer,
|
||||||
|
)
|
||||||
|
var i Payment
|
||||||
|
err := row.Scan(
|
||||||
|
&i.ID,
|
||||||
|
&i.CustomerID,
|
||||||
|
&i.PaymentCategory,
|
||||||
|
&i.Bankname,
|
||||||
|
&i.IBAN,
|
||||||
|
&i.BIC,
|
||||||
|
&i.PaypalAccount,
|
||||||
|
&i.PaypalID,
|
||||||
|
&i.PaymentSystem,
|
||||||
|
&i.Type,
|
||||||
|
&i.Creator,
|
||||||
|
&i.Created,
|
||||||
|
&i.Changer,
|
||||||
|
&i.Changed,
|
||||||
|
)
|
||||||
|
return i, err
|
||||||
|
}
|
||||||
|
|
||||||
|
const deletePayment = `-- name: DeletePayment :exec
|
||||||
|
DELETE FROM payments
|
||||||
|
WHERE "ID" = $1
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) DeletePayment(ctx context.Context, id int64) error {
|
||||||
|
_, err := q.db.ExecContext(ctx, deletePayment, id)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
const getPayment = `-- name: GetPayment :one
|
||||||
|
SELECT "ID", "customerID", "paymentCategory", bankname, "IBAN", "BIC", "paypalAccount", "paypalID", "paymentSystem", type, creator, created, changer, changed FROM payments
|
||||||
|
WHERE "ID" = $1 LIMIT 1
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) GetPayment(ctx context.Context, id int64) (Payment, error) {
|
||||||
|
row := q.db.QueryRowContext(ctx, getPayment, id)
|
||||||
|
var i Payment
|
||||||
|
err := row.Scan(
|
||||||
|
&i.ID,
|
||||||
|
&i.CustomerID,
|
||||||
|
&i.PaymentCategory,
|
||||||
|
&i.Bankname,
|
||||||
|
&i.IBAN,
|
||||||
|
&i.BIC,
|
||||||
|
&i.PaypalAccount,
|
||||||
|
&i.PaypalID,
|
||||||
|
&i.PaymentSystem,
|
||||||
|
&i.Type,
|
||||||
|
&i.Creator,
|
||||||
|
&i.Created,
|
||||||
|
&i.Changer,
|
||||||
|
&i.Changed,
|
||||||
|
)
|
||||||
|
return i, err
|
||||||
|
}
|
||||||
|
|
||||||
|
const listPayments = `-- name: ListPayments :many
|
||||||
|
SELECT "ID", "customerID", "paymentCategory", bankname, "IBAN", "BIC", "paypalAccount", "paypalID", "paymentSystem", type, creator, created, changer, changed FROM payments
|
||||||
|
ORDER BY "paymentCategory"
|
||||||
|
LIMIT $1
|
||||||
|
OFFSET $2
|
||||||
|
`
|
||||||
|
|
||||||
|
type ListPaymentsParams struct {
|
||||||
|
Limit int32 `json:"limit"`
|
||||||
|
Offset int32 `json:"offset"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) ListPayments(ctx context.Context, arg ListPaymentsParams) ([]Payment, error) {
|
||||||
|
rows, err := q.db.QueryContext(ctx, listPayments, arg.Limit, arg.Offset)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
items := []Payment{}
|
||||||
|
for rows.Next() {
|
||||||
|
var i Payment
|
||||||
|
if err := rows.Scan(
|
||||||
|
&i.ID,
|
||||||
|
&i.CustomerID,
|
||||||
|
&i.PaymentCategory,
|
||||||
|
&i.Bankname,
|
||||||
|
&i.IBAN,
|
||||||
|
&i.BIC,
|
||||||
|
&i.PaypalAccount,
|
||||||
|
&i.PaypalID,
|
||||||
|
&i.PaymentSystem,
|
||||||
|
&i.Type,
|
||||||
|
&i.Creator,
|
||||||
|
&i.Created,
|
||||||
|
&i.Changer,
|
||||||
|
&i.Changed,
|
||||||
|
); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
items = append(items, i)
|
||||||
|
}
|
||||||
|
if err := rows.Close(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if err := rows.Err(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return items, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
const updatePayment = `-- name: UpdatePayment :one
|
||||||
|
UPDATE payments
|
||||||
|
SET
|
||||||
|
"customerID" = COALESCE($3, "customerID"),
|
||||||
|
"paymentCategory" = COALESCE($4, "paymentCategory"),
|
||||||
|
bankname = COALESCE($5, bankname),
|
||||||
|
"IBAN" = COALESCE($6, "IBAN"),
|
||||||
|
"BIC" = COALESCE($7, "BIC"),
|
||||||
|
"paypalAccount" = COALESCE($8, "paypalAccount"),
|
||||||
|
"paypalID" = COALESCE($9, "paypalID"),
|
||||||
|
"paymentSystem" = COALESCE($10, "paymentSystem"),
|
||||||
|
"type" = COALESCE($11, "type"),
|
||||||
|
changer = $2,
|
||||||
|
changed = now()
|
||||||
|
WHERE "ID" = $1
|
||||||
|
RETURNING "ID", "customerID", "paymentCategory", bankname, "IBAN", "BIC", "paypalAccount", "paypalID", "paymentSystem", type, creator, created, changer, changed
|
||||||
|
`
|
||||||
|
|
||||||
|
type UpdatePaymentParams struct {
|
||||||
|
ID int64 `json:"ID"`
|
||||||
|
Changer string `json:"changer"`
|
||||||
|
Customerid sql.NullInt64 `json:"customerid"`
|
||||||
|
Paymentcategory sql.NullString `json:"paymentcategory"`
|
||||||
|
Bankname sql.NullString `json:"bankname"`
|
||||||
|
Iban sql.NullString `json:"iban"`
|
||||||
|
Bic sql.NullString `json:"bic"`
|
||||||
|
Paypalaccount sql.NullString `json:"paypalaccount"`
|
||||||
|
Paypalid sql.NullString `json:"paypalid"`
|
||||||
|
Paymentsystem sql.NullString `json:"paymentsystem"`
|
||||||
|
Type sql.NullString `json:"type"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) UpdatePayment(ctx context.Context, arg UpdatePaymentParams) (Payment, error) {
|
||||||
|
row := q.db.QueryRowContext(ctx, updatePayment,
|
||||||
|
arg.ID,
|
||||||
|
arg.Changer,
|
||||||
|
arg.Customerid,
|
||||||
|
arg.Paymentcategory,
|
||||||
|
arg.Bankname,
|
||||||
|
arg.Iban,
|
||||||
|
arg.Bic,
|
||||||
|
arg.Paypalaccount,
|
||||||
|
arg.Paypalid,
|
||||||
|
arg.Paymentsystem,
|
||||||
|
arg.Type,
|
||||||
|
)
|
||||||
|
var i Payment
|
||||||
|
err := row.Scan(
|
||||||
|
&i.ID,
|
||||||
|
&i.CustomerID,
|
||||||
|
&i.PaymentCategory,
|
||||||
|
&i.Bankname,
|
||||||
|
&i.IBAN,
|
||||||
|
&i.BIC,
|
||||||
|
&i.PaypalAccount,
|
||||||
|
&i.PaypalID,
|
||||||
|
&i.PaymentSystem,
|
||||||
|
&i.Type,
|
||||||
|
&i.Creator,
|
||||||
|
&i.Created,
|
||||||
|
&i.Changer,
|
||||||
|
&i.Changed,
|
||||||
|
)
|
||||||
|
return i, err
|
||||||
|
}
|
144
db/sqlc/payment_test.go
Normal file
144
db/sqlc/payment_test.go
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
package db
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"database/sql"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/itsscb/df/util"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func createRandomPayment(t *testing.T) Payment {
|
||||||
|
account := createRandomCustomer(t)
|
||||||
|
require.NotEmpty(t, account)
|
||||||
|
|
||||||
|
arg := CreatePaymentParams{
|
||||||
|
CustomerID: account.ID,
|
||||||
|
PaymentCategory: util.RandomUser(),
|
||||||
|
Bankname: sql.NullString{
|
||||||
|
Valid: true,
|
||||||
|
String: util.RandomUser(),
|
||||||
|
},
|
||||||
|
IBAN: sql.NullString{
|
||||||
|
Valid: true,
|
||||||
|
String: util.RandomUser(),
|
||||||
|
},
|
||||||
|
BIC: sql.NullString{
|
||||||
|
Valid: true,
|
||||||
|
String: util.RandomUser(),
|
||||||
|
},
|
||||||
|
PaypalAccount: sql.NullString{
|
||||||
|
Valid: true,
|
||||||
|
String: util.RandomUser(),
|
||||||
|
},
|
||||||
|
PaypalID: sql.NullString{
|
||||||
|
Valid: true,
|
||||||
|
String: util.RandomUser(),
|
||||||
|
},
|
||||||
|
PaymentSystem: sql.NullString{
|
||||||
|
Valid: true,
|
||||||
|
String: util.RandomUser(),
|
||||||
|
},
|
||||||
|
Type: util.RandomUser(),
|
||||||
|
Creator: util.RandomUser(),
|
||||||
|
}
|
||||||
|
|
||||||
|
person, err := testQueries.CreatePayment(context.Background(), arg)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NotEmpty(t, person)
|
||||||
|
|
||||||
|
require.Equal(t, arg.PaymentCategory, person.PaymentCategory)
|
||||||
|
require.Equal(t, arg.Bankname, person.Bankname)
|
||||||
|
require.Equal(t, arg.CustomerID, person.CustomerID)
|
||||||
|
require.Equal(t, arg.IBAN, person.IBAN)
|
||||||
|
require.Equal(t, arg.BIC, person.BIC)
|
||||||
|
require.Equal(t, arg.PaypalAccount, person.PaypalAccount)
|
||||||
|
require.Equal(t, arg.PaymentSystem, person.PaymentSystem)
|
||||||
|
require.Equal(t, arg.PaypalID, person.PaypalID)
|
||||||
|
require.Equal(t, arg.Creator, person.Creator)
|
||||||
|
require.Equal(t, arg.Type, person.Type)
|
||||||
|
|
||||||
|
require.NotZero(t, person.ID)
|
||||||
|
require.NotZero(t, person.Created)
|
||||||
|
|
||||||
|
return person
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreatePayment(t *testing.T) {
|
||||||
|
createRandomPayment(t)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetPayment(t *testing.T) {
|
||||||
|
newperson := createRandomPayment(t)
|
||||||
|
require.NotEmpty(t, newperson)
|
||||||
|
|
||||||
|
person, err := testQueries.GetPayment(context.Background(), newperson.ID)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NotEmpty(t, person)
|
||||||
|
|
||||||
|
require.Equal(t, newperson.PaymentCategory, person.PaymentCategory)
|
||||||
|
require.Equal(t, newperson.Bankname, person.Bankname)
|
||||||
|
require.Equal(t, newperson.CustomerID, person.CustomerID)
|
||||||
|
require.Equal(t, newperson.IBAN, person.IBAN)
|
||||||
|
require.Equal(t, newperson.BIC, person.BIC)
|
||||||
|
require.Equal(t, newperson.PaypalAccount, person.PaypalAccount)
|
||||||
|
require.Equal(t, newperson.PaymentSystem, person.PaymentSystem)
|
||||||
|
require.Equal(t, newperson.PaypalID, person.PaypalID)
|
||||||
|
require.Equal(t, newperson.Creator, person.Creator)
|
||||||
|
require.Equal(t, newperson.Type, person.Type)
|
||||||
|
|
||||||
|
require.WithinDuration(t, newperson.Created, person.Created, time.Second)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDeletePayment(t *testing.T) {
|
||||||
|
person1 := createRandomPayment(t)
|
||||||
|
err := testQueries.DeletePayment(context.Background(), person1.ID)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
person2, err := testQueries.GetPayment(context.Background(), person1.ID)
|
||||||
|
require.Error(t, err)
|
||||||
|
require.EqualError(t, err, sql.ErrNoRows.Error())
|
||||||
|
require.Empty(t, person2)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUpdatePayment(t *testing.T) {
|
||||||
|
person1 := createRandomPayment(t)
|
||||||
|
require.NotEmpty(t, person1)
|
||||||
|
|
||||||
|
arg := UpdatePaymentParams{
|
||||||
|
ID: person1.ID,
|
||||||
|
Bankname: sql.NullString{
|
||||||
|
String: util.RandomUser(),
|
||||||
|
Valid: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
person2, err := testQueries.UpdatePayment(context.Background(), arg)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.NotEmpty(t, person2)
|
||||||
|
|
||||||
|
require.Equal(t, person1.ID, person2.ID)
|
||||||
|
require.Equal(t, person1.PaymentCategory, person2.PaymentCategory)
|
||||||
|
require.NotEqual(t, person1.Bankname, person2.Bankname)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListPayments(t *testing.T) {
|
||||||
|
for i := 0; i < 10; i++ {
|
||||||
|
createRandomPayment(t)
|
||||||
|
}
|
||||||
|
|
||||||
|
arg := ListPaymentsParams{
|
||||||
|
Limit: 5,
|
||||||
|
Offset: 5,
|
||||||
|
}
|
||||||
|
|
||||||
|
persons, err := testQueries.ListPayments(context.Background(), arg)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Len(t, persons, 5)
|
||||||
|
|
||||||
|
for _, person := range persons {
|
||||||
|
require.NotEmpty(t, person)
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user