package model

import (
	"time"

	"github.com/tech/sendico/pkg/db/storable"
	"github.com/tech/sendico/pkg/model"
)

// PaymentQuoteRecord stores a quoted payment snapshot for later execution.
type PaymentQuoteRecord struct {
	storable.Base               `bson:",inline" json:",inline"`
	model.OrganizationBoundBase `bson:",inline" json:",inline"`

	QuoteRef       string                `bson:"quoteRef" json:"quoteRef"`
	IdempotencyKey string                `bson:"idempotencyKey" json:"idempotencyKey"`
	RequestShape   QuoteRequestShape     `bson:"requestShape,omitempty" json:"requestShape,omitempty"`
	Items          []*PaymentQuoteItemV2 `bson:"items,omitempty" json:"items,omitempty"`
	ExpiresAt      time.Time             `bson:"expiresAt" json:"expiresAt"`
	PurgeAt        time.Time             `bson:"purgeAt,omitempty" json:"purgeAt,omitempty"`
	Hash           string                `bson:"hash" json:"hash"`
}

// Collection implements storable.Storable.
func (*PaymentQuoteRecord) Collection() string {
	return "payment_quotes"
}
