// Code generated by sqlc. DO NOT EDIT.
// versions:
//   sqlc v1.22.0

package db

import (
	"database/sql"
	"time"

	"github.com/google/uuid"
)

type Account struct {
	ID                uint64         `json:"id"`
	PermissionLevel   int32          `json:"permission_level"`
	Passwordhash      string         `json:"passwordhash"`
	Email             string         `json:"email"`
	SecretKey         sql.NullString `json:"secret_key"`
	EmailVerified     sql.NullBool   `json:"email_verified"`
	EmailVerifiedTime sql.NullTime   `json:"email_verified_time"`
}

type AccountInfo struct {
	AccountID           uint64         `json:"account_id"`
	Firstname           string         `json:"firstname"`
	Lastname            string         `json:"lastname"`
	Birthday            time.Time      `json:"birthday"`
	PrivacyAccepted     sql.NullBool   `json:"privacy_accepted"`
	PrivacyAcceptedDate sql.NullTime   `json:"privacy_accepted_date"`
	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"`
	Created             time.Time      `json:"created"`
	Changer             string         `json:"changer"`
	Changed             time.Time      `json:"changed"`
}

type Document struct {
	ID          uint64         `json:"id"`
	PersonID    sql.NullInt64  `json:"person_id"`
	Name        string         `json:"name"`
	Type        string         `json:"type"`
	Path        string         `json:"path"`
	Hash        string         `json:"hash"`
	Valid       bool           `json:"valid"`
	ValidDate   sql.NullTime   `json:"valid_date"`
	ValidatedBy sql.NullString `json:"validated_by"`
	MailID      sql.NullInt64  `json:"mail_id"`
	Creator     string         `json:"creator"`
	Created     time.Time      `json:"created"`
	Changer     string         `json:"changer"`
	Changed     time.Time      `json:"changed"`
}

type Mail struct {
	ID        uint64    `json:"id"`
	From      string    `json:"from"`
	To        []string  `json:"to"`
	Cc        []string  `json:"cc"`
	Timestamp time.Time `json:"timestamp"`
	Subject   string    `json:"subject"`
	Body      string    `json:"body"`
	Creator   string    `json:"creator"`
	Created   time.Time `json:"created"`
	Changer   string    `json:"changer"`
	Changed   time.Time `json:"changed"`
}

type Payment struct {
	ID              uint64         `json:"id"`
	AccountID       uint64         `json:"account_id"`
	PaymentCategory string         `json:"payment_category"`
	Bankname        sql.NullString `json:"bankname"`
	IBAN            sql.NullString `json:"IBAN"`
	BIC             sql.NullString `json:"BIC"`
	PaypalAccount   sql.NullString `json:"paypal_account"`
	PaypalID        sql.NullString `json:"paypal_id"`
	PaymentSystem   sql.NullString `json:"payment_system"`
	Type            string         `json:"type"`
	Creator         string         `json:"creator"`
	Created         time.Time      `json:"created"`
	Changer         string         `json:"changer"`
	Changed         time.Time      `json:"changed"`
}

type Person struct {
	ID        uint64    `json:"id"`
	AccountID uint64    `json:"account_id"`
	Firstname string    `json:"firstname"`
	Lastname  string    `json:"lastname"`
	Birthday  time.Time `json:"birthday"`
	City      string    `json:"city"`
	Zip       string    `json:"zip"`
	Street    string    `json:"street"`
	Country   string    `json:"country"`
	Creator   string    `json:"creator"`
	Created   time.Time `json:"created"`
	Changer   string    `json:"changer"`
	Changed   time.Time `json:"changed"`
}

type Provider struct {
	ID          uint64    `json:"id"`
	Name        string    `json:"name"`
	Description string    `json:"description"`
	Category    string    `json:"category"`
	Email       string    `json:"email"`
	Creator     string    `json:"creator"`
	Created     time.Time `json:"created"`
	Changer     string    `json:"changer"`
	Changed     time.Time `json:"changed"`
}

type Query struct {
	ID    uint64 `json:"id"`
	Name  string `json:"name"`
	Query string `json:"query"`
}

type Return struct {
	ID          uint64    `json:"id"`
	PersonID    uint64    `json:"person_id"`
	ProviderID  uint64    `json:"provider_id"`
	Name        string    `json:"name"`
	Description string    `json:"description"`
	Category    string    `json:"category"`
	Email       string    `json:"email"`
	Status      string    `json:"status"`
	Creator     string    `json:"creator"`
	Created     time.Time `json:"created"`
	Changer     string    `json:"changer"`
	Changed     time.Time `json:"changed"`
}

type ReturnsLog struct {
	ID       uint64    `json:"id"`
	ReturnID uint64    `json:"return_id"`
	MailID   uint64    `json:"mail_id"`
	Status   string    `json:"status"`
	Creator  string    `json:"creator"`
	Created  time.Time `json:"created"`
	Changer  string    `json:"changer"`
	Changed  time.Time `json:"changed"`
}

type Session struct {
	ID           uuid.UUID `json:"id"`
	AccountID    uint64    `json:"account_id"`
	UserAgent    string    `json:"user_agent"`
	ClientIp     string    `json:"client_ip"`
	RefreshToken string    `json:"refresh_token"`
	IsBlocked    bool      `json:"is_blocked"`
	ExpiresAt    time.Time `json:"expires_at"`
	CreatedAt    time.Time `json:"created_at"`
}
