Add api.person endpoint

Fixes #65
This commit is contained in:
itsscb 2023-10-06 00:54:14 +02:00
parent 273b011923
commit 688108fc4f
6 changed files with 115 additions and 2 deletions

View File

@ -42,4 +42,8 @@ RETURNING *;
-- name: DeletePerson :exec -- name: DeletePerson :exec
DELETE FROM persons DELETE FROM persons
WHERE "id" = $1; WHERE "id" = $1;
-- name: GetReturns :many
SELECT * FROM returns
WHERE "person_id" = sqlc.arg(id);

View File

@ -48,4 +48,28 @@ RETURNING *;
-- name: DeleteReturn :exec -- name: DeleteReturn :exec
DELETE FROM returns DELETE FROM returns
WHERE "id" = sqlc.arg(id); WHERE "id" = sqlc.arg(id);
-- name: CloneProviders :exec
INSERT INTO returns (
"provider_id",
"name",
"description",
"category",
"email",
"status",
"creator",
"changer",
"person_id"
)
SELECT
"id",
"name",
"description",
"category",
"email",
'new',
sqlc.arg(creator),
sqlc.arg(creator),
sqlc.arg(person_id)
FROM providers;

View File

@ -109,6 +109,47 @@ func (q *Queries) GetPerson(ctx context.Context, id int64) (Person, error) {
return i, err return i, err
} }
const getReturns = `-- name: GetReturns :many
SELECT id, person_id, provider_id, name, description, category, email, status, creator, created, changer, changed FROM returns
WHERE "person_id" = $1
`
func (q *Queries) GetReturns(ctx context.Context, id int64) ([]Return, error) {
rows, err := q.db.QueryContext(ctx, getReturns, id)
if err != nil {
return nil, err
}
defer rows.Close()
items := []Return{}
for rows.Next() {
var i Return
if err := rows.Scan(
&i.ID,
&i.PersonID,
&i.ProviderID,
&i.Name,
&i.Description,
&i.Category,
&i.Email,
&i.Status,
&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 listPersons = `-- name: ListPersons :many const listPersons = `-- name: ListPersons :many
SELECT id, account_id, firstname, lastname, birthday, city, zip, street, country, creator, created, changer, changed FROM persons SELECT id, account_id, firstname, lastname, birthday, city, zip, street, country, creator, created, changer, changed FROM persons
ORDER BY "lastname", "firstname" ORDER BY "lastname", "firstname"

View File

@ -12,6 +12,7 @@ import (
type Querier interface { type Querier interface {
BlockSession(ctx context.Context, id uuid.UUID) error BlockSession(ctx context.Context, id uuid.UUID) error
CloneProviders(ctx context.Context, arg CloneProvidersParams) error
CreateAccount(ctx context.Context, arg CreateAccountParams) (Account, error) CreateAccount(ctx context.Context, arg CreateAccountParams) (Account, error)
CreateDocumentMail(ctx context.Context, arg CreateDocumentMailParams) (Document, error) CreateDocumentMail(ctx context.Context, arg CreateDocumentMailParams) (Document, error)
CreateDocumentUpload(ctx context.Context, arg CreateDocumentUploadParams) (Document, error) CreateDocumentUpload(ctx context.Context, arg CreateDocumentUploadParams) (Document, error)
@ -52,6 +53,7 @@ type Querier interface {
GetPerson(ctx context.Context, id int64) (Person, error) GetPerson(ctx context.Context, id int64) (Person, error)
GetProvider(ctx context.Context, id int64) (Provider, error) GetProvider(ctx context.Context, id int64) (Provider, error)
GetReturn(ctx context.Context, id int64) (Return, error) GetReturn(ctx context.Context, id int64) (Return, error)
GetReturns(ctx context.Context, id int64) ([]Return, error)
GetReturnsLog(ctx context.Context, id int64) (ReturnsLog, error) GetReturnsLog(ctx context.Context, id int64) (ReturnsLog, error)
GetSession(ctx context.Context, id uuid.UUID) (Session, error) GetSession(ctx context.Context, id uuid.UUID) (Session, error)
InvalidateDocument(ctx context.Context, arg InvalidateDocumentParams) (Document, error) InvalidateDocument(ctx context.Context, arg InvalidateDocumentParams) (Document, error)

View File

@ -10,6 +10,41 @@ import (
"database/sql" "database/sql"
) )
const cloneProviders = `-- name: CloneProviders :exec
INSERT INTO returns (
"provider_id",
"name",
"description",
"category",
"email",
"status",
"creator",
"changer",
"person_id"
)
SELECT
"id",
"name",
"description",
"category",
"email",
'new',
$1,
$1,
$2
FROM providers
`
type CloneProvidersParams struct {
Creator string `json:"creator"`
PersonID int64 `json:"person_id"`
}
func (q *Queries) CloneProviders(ctx context.Context, arg CloneProvidersParams) error {
_, err := q.db.ExecContext(ctx, cloneProviders, arg.Creator, arg.PersonID)
return err
}
const createReturn = `-- name: CreateReturn :one const createReturn = `-- name: CreateReturn :one
INSERT INTO returns ( INSERT INTO returns (
"person_id", "person_id",

View File

@ -29,7 +29,14 @@ func (store *SQLStore) CreatePersonTx(ctx context.Context, arg CreatePersonTxPar
var err error var err error
result.Person, err = q.CreatePerson(ctx, CreatePersonParams(arg)) result.Person, err = q.CreatePerson(ctx, CreatePersonParams(arg))
if err != nil {
return err
}
err = q.CloneProviders(ctx, CloneProvidersParams{
Creator: arg.Creator,
PersonID: result.Person.ID,
})
return err return err
}) })