Documentation
¶
Index ¶
- type BillingPlugin
- func (p *BillingPlugin) OnLoad(ctx *plugins.PluginContext) error
- func (p *BillingPlugin) OnSessionCreated(ctx *plugins.PluginContext, session interface{}) error
- func (p *BillingPlugin) OnSessionHeartbeat(ctx *plugins.PluginContext, session interface{}) error
- func (p *BillingPlugin) OnSessionTerminated(ctx *plugins.PluginContext, session interface{}) error
- func (p *BillingPlugin) OnUnload(ctx *plugins.PluginContext) error
- func (p *BillingPlugin) OnUserCreated(ctx *plugins.PluginContext, user interface{}) error
- type Invoice
- type SessionUsage
- type Subscription
- type UsageRecord
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BillingPlugin ¶
type BillingPlugin struct {
plugins.BasePlugin
// contains filtered or unexported fields
}
BillingPlugin implements comprehensive billing and usage tracking
func NewBillingPlugin ¶
func NewBillingPlugin() *BillingPlugin
NewBillingPlugin creates a new billing plugin instance
func (*BillingPlugin) OnLoad ¶
func (p *BillingPlugin) OnLoad(ctx *plugins.PluginContext) error
OnLoad is called when the plugin is loaded
func (*BillingPlugin) OnSessionCreated ¶
func (p *BillingPlugin) OnSessionCreated(ctx *plugins.PluginContext, session interface{}) error
OnSessionCreated tracks when a session starts
func (*BillingPlugin) OnSessionHeartbeat ¶
func (p *BillingPlugin) OnSessionHeartbeat(ctx *plugins.PluginContext, session interface{}) error
OnSessionHeartbeat updates last activity time
func (*BillingPlugin) OnSessionTerminated ¶
func (p *BillingPlugin) OnSessionTerminated(ctx *plugins.PluginContext, session interface{}) error
OnSessionTerminated records final usage when session ends
func (*BillingPlugin) OnUnload ¶
func (p *BillingPlugin) OnUnload(ctx *plugins.PluginContext) error
OnUnload is called when the plugin is unloaded
func (*BillingPlugin) OnUserCreated ¶
func (p *BillingPlugin) OnUserCreated(ctx *plugins.PluginContext, user interface{}) error
OnUserCreated sets up billing for new user
type Invoice ¶
type Invoice struct {
ID int64 `json:"id"`
UserID string `json:"user_id"`
InvoiceNumber string `json:"invoice_number"`
PeriodStart time.Time `json:"period_start"`
PeriodEnd time.Time `json:"period_end"`
Subtotal float64 `json:"subtotal"`
Credits float64 `json:"credits"`
Total float64 `json:"total"`
Status string `json:"status"` // draft, sent, paid, overdue
DueDate time.Time `json:"due_date"`
PaidAt *time.Time `json:"paid_at,omitempty"`
CreatedAt time.Time `json:"created_at"`
}
Invoice represents a billing invoice
type SessionUsage ¶
type SessionUsage struct {
SessionID string
UserID string
StartTime time.Time
LastHeartbeat time.Time
CPUCores float64
MemoryGB float64
StorageGB float64
TotalCost float64
}
SessionUsage tracks active session resource usage
type Subscription ¶
type Subscription struct {
ID int64 `json:"id"`
UserID string `json:"user_id"`
PlanID string `json:"plan_id"`
Status string `json:"status"` // active, canceled, suspended
CurrentPeriodStart time.Time `json:"current_period_start"`
CurrentPeriodEnd time.Time `json:"current_period_end"`
StripeSubID string `json:"stripe_subscription_id,omitempty"`
CreatedAt time.Time `json:"created_at"`
CanceledAt *time.Time `json:"canceled_at,omitempty"`
}
Subscription represents a user subscription
type UsageRecord ¶
type UsageRecord struct {
ID int64 `json:"id"`
UserID string `json:"user_id"`
SessionID string `json:"session_id,omitempty"`
ResourceType string `json:"resource_type"` // cpu, memory, storage
Quantity float64 `json:"quantity"`
Unit string `json:"unit"` // core-hours, gb-hours, gb-months
UnitPrice float64 `json:"unit_price"`
TotalCost float64 `json:"total_cost"`
StartTime time.Time `json:"start_time"`
EndTime time.Time `json:"end_time"`
CreatedAt time.Time `json:"created_at"`
}
UsageRecord represents a billing usage record
Click to show internal directories.
Click to hide internal directories.