skeleton/internal/database/email.sql.go

198 lines
4.7 KiB
Go
Raw Normal View History

2020-07-19 15:52:08 +02:00
// Code generated by sqlc. DO NOT EDIT.
// source: email.sql
package database
import (
"context"
)
2020-07-21 22:50:11 +02:00
const countEmailsByIdentityID = `-- name: CountEmailsByIdentityID :one
SELECT
COUNT(*)
FROM
"email"
WHERE
"identity_id" = $1
`
func (q *Queries) CountEmailsByIdentityID(ctx context.Context, identityID int64) (int64, error) {
row := q.db.QueryRowContext(ctx, countEmailsByIdentityID, identityID)
var count int64
err := row.Scan(&count)
return count, err
}
const countUnverifiedEmailsByIdentityID = `-- name: CountUnverifiedEmailsByIdentityID :one
SELECT
COUNT(*)
FROM
"email"
WHERE
"identity_id" = $1 AND
"is_verified" = FALSE
`
func (q *Queries) CountUnverifiedEmailsByIdentityID(ctx context.Context, identityID int64) (int64, error) {
row := q.db.QueryRowContext(ctx, countUnverifiedEmailsByIdentityID, identityID)
var count int64
err := row.Scan(&count)
return count, err
}
2020-07-19 15:52:08 +02:00
const createEmail = `-- name: CreateEmail :one
INSERT INTO "email" (
2020-07-21 22:50:11 +02:00
"address",
"identity_id",
"is_verified"
2020-07-19 15:52:08 +02:00
) VALUES (
2020-07-21 22:50:11 +02:00
$1, $2, $3
) RETURNING address, identity_id, is_verified, is_primary, created_at
2020-07-19 15:52:08 +02:00
`
type CreateEmailParams struct {
2020-07-21 22:50:11 +02:00
Address string `json:"address"`
IdentityID int64 `json:"identity_id"`
IsVerified bool `json:"is_verified"`
2020-07-19 15:52:08 +02:00
}
func (q *Queries) CreateEmail(ctx context.Context, arg CreateEmailParams) (Email, error) {
2020-07-21 22:50:11 +02:00
row := q.db.QueryRowContext(ctx, createEmail, arg.Address, arg.IdentityID, arg.IsVerified)
2020-07-19 15:52:08 +02:00
var i Email
2020-07-21 22:50:11 +02:00
err := row.Scan(
&i.Address,
&i.IdentityID,
&i.IsVerified,
&i.IsPrimary,
&i.CreatedAt,
)
2020-07-19 15:52:08 +02:00
return i, err
}
const destroyEmail = `-- name: DestroyEmail :exec
DELETE FROM "email" WHERE "address" = $1
`
func (q *Queries) DestroyEmail(ctx context.Context, address string) error {
_, err := q.db.ExecContext(ctx, destroyEmail, address)
return err
}
const getEmailByAddress = `-- name: GetEmailByAddress :one
SELECT
2020-07-21 22:50:11 +02:00
address, identity_id, is_verified, is_primary, created_at
FROM "email"
WHERE
"address" = $1
2020-07-19 15:52:08 +02:00
`
func (q *Queries) GetEmailByAddress(ctx context.Context, address string) (Email, error) {
row := q.db.QueryRowContext(ctx, getEmailByAddress, address)
var i Email
2020-07-21 22:50:11 +02:00
err := row.Scan(
&i.Address,
&i.IdentityID,
&i.IsVerified,
&i.IsPrimary,
&i.CreatedAt,
)
2020-07-19 15:52:08 +02:00
return i, err
}
2020-07-21 22:50:11 +02:00
const getEmailByIdentityID = `-- name: GetEmailByIdentityID :many
SELECT
address, identity_id, is_verified, is_primary, created_at
FROM "email"
WHERE
"identity_id" = $1
`
func (q *Queries) GetEmailByIdentityID(ctx context.Context, identityID int64) ([]Email, error) {
rows, err := q.db.QueryContext(ctx, getEmailByIdentityID, identityID)
if err != nil {
return nil, err
}
defer rows.Close()
var items []Email
for rows.Next() {
var i Email
if err := rows.Scan(
&i.Address,
&i.IdentityID,
&i.IsVerified,
&i.IsPrimary,
&i.CreatedAt,
); 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 getPrimaryEmailByIdentityID = `-- name: GetPrimaryEmailByIdentityID :one
2020-07-19 15:52:08 +02:00
SELECT
2020-07-21 22:50:11 +02:00
address, identity_id, is_verified, is_primary, created_at
FROM "email"
WHERE
"identity_id" = $1 AND "is_primary"
2020-07-19 15:52:08 +02:00
`
2020-07-21 22:50:11 +02:00
func (q *Queries) GetPrimaryEmailByIdentityID(ctx context.Context, identityID int64) (Email, error) {
row := q.db.QueryRowContext(ctx, getPrimaryEmailByIdentityID, identityID)
2020-07-19 15:52:08 +02:00
var i Email
2020-07-21 22:50:11 +02:00
err := row.Scan(
&i.Address,
&i.IdentityID,
&i.IsVerified,
&i.IsPrimary,
&i.CreatedAt,
)
2020-07-19 15:52:08 +02:00
return i, err
}
2020-07-21 22:50:11 +02:00
const updateEmailPrimary = `-- name: UpdateEmailPrimary :exec
UPDATE "email"
SET
"is_primary" = NOT "is_primary"
WHERE
"identity_id" = $1 AND (
( "address" <> $2 AND "is_primary" = true ) OR
( "address" = $2 AND "is_primary" = false AND "is_verified" = true )
)
2020-07-19 15:52:08 +02:00
`
2020-07-21 22:50:11 +02:00
type UpdateEmailPrimaryParams struct {
IdentityID int64 `json:"identity_id"`
Address string `json:"address"`
2020-07-19 15:52:08 +02:00
}
2020-07-21 22:50:11 +02:00
// UpdateEmailPrimary sets exactly one primary email for an identity.
// The mail address has to have been verified.
// this query basically combines these two queries into one atomic one:
// UPDATE "email" SET "is_primary" = false WHERE "identity_id" = $1;
// UPDATE "email" SET "is_primary" = true WHERE "identity_id" = $1 AND "address" = $2 AND "is_verified" = true;
func (q *Queries) UpdateEmailPrimary(ctx context.Context, arg UpdateEmailPrimaryParams) error {
_, err := q.db.ExecContext(ctx, updateEmailPrimary, arg.IdentityID, arg.Address)
return err
}
const updateEmailVerified = `-- name: UpdateEmailVerified :exec
UPDATE "email" SET (
"is_verified"
) = (
$2
) WHERE "address" = $1
`
func (q *Queries) UpdateEmailVerified(ctx context.Context, address string) error {
_, err := q.db.ExecContext(ctx, updateEmailVerified, address)
2020-07-19 15:52:08 +02:00
return err
}