subscription

package
v0.0.0-...-4c74423 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 19, 2023 License: GPL-3.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrSubscriptionNotFound = errors.New("subscription not found")
	ErrSubscriptionExpired  = errors.New("subscription expired")
	ErrSubscriptionUnpaid   = errors.New("subscription unpaid")
)

Functions

This section is empty.

Types

type Invoice

type Invoice struct {
	ID               string `json:"id"`
	LightningInvoice string `json:"lightning_invoice"`
}

type LNProvider

type LNProvider interface {
	CreateInvoice(ctx context.Context, sub Subscription) (*Invoice, error)
	IsInvoicePaid(ctx context.Context, id string) (bool, error)
}

type Subscription

type Subscription struct {
	ID               int64              `json:"id" db:"id"`
	Pubkey           string             `json:"pubkey" db:"pubkey"`
	Days             int                `json:"days" db:"days"`
	Sats             int                `json:"sats" db:"sats"`
	InvoiceID        string             `json:"invoice_id" db:"invoice_id"`
	Provider         string             `json:"provider" db:"provider"`
	Status           SubscriptionStatus `json:"status" db:"status"`
	LightningInvoice string             `json:"lightning_invoice" db:"lightning_invoice"`
	CreatedAt        time.Time          `json:"created_at" db:"created_at"`
	ExpiresAt        time.Time          `json:"expires_at" db:"expires_at"`
	UpdatedAt        *time.Time         `json:"updated_at" db:"updated_at"`
}

type SubscriptionService

type SubscriptionService struct {
	// contains filtered or unexported fields
}

func New

func New(repo subscriptionRepo, ln LNProvider, lnProviderType string) (*SubscriptionService, error)

func (*SubscriptionService) CreateSubscription

func (s *SubscriptionService) CreateSubscription(ctx context.Context, sub Subscription) (*Subscription, error)

func (*SubscriptionService) GetActiveSubscription

func (s *SubscriptionService) GetActiveSubscription(ctx context.Context, pubkey string) (*Subscription, error)

GetActiveSubscription fetches the active subscription for a pubkey. An error is returned if the subscription is not found, unpaid, or expired.

func (*SubscriptionService) UpdateInvoiceStatus

func (s *SubscriptionService) UpdateInvoiceStatus(ctx context.Context, invoiceID string, status SubscriptionStatus) error

type SubscriptionStatus

type SubscriptionStatus string
const (
	StatusPaid   SubscriptionStatus = "paid"
	StatusUnpaid SubscriptionStatus = "unpaid"
)

Directories

Path Synopsis
ln
zbd
repo
pg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL