Files
member-console/internal/billing/models.go
T
cgalo5758 dd3962990b Adopt entity keys and add invoice numbers
Replace the entity slugs on organizations, workspaces, resource pools,
and
plan ladders with nullable `key` columns and add keys to products,
prices,
and entitlement sets. Rename `providers.slug` to `provider` and add
partial
unique indexes for system and org role names.

Assign invoice numbers per billing account from a gapless transactional
counter; Stripe's number moves to the invoice mapping as an external
reference.

Seeds, fixtures, and the operator lookup address rows by key, and the
returning-login resync no longer blanks a display name when the IdP
sends
no `name` claim.
2026-08-29 20:12:04 -05:00

196 lines
8.2 KiB
Go

// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.29.0
package billing
import (
"database/sql"
"encoding/json"
"time"
"github.com/google/uuid"
"github.com/sqlc-dev/pqtype"
)
type Account struct {
BillingAccountID string `json:"billing_account_id"`
OrgID string `json:"org_id"`
Name string `json:"name"`
Status string `json:"status"`
Metadata json.RawMessage `json:"metadata"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
NextInvoiceNumber int32 `json:"next_invoice_number"`
}
type CoreProductShape struct {
ProductID string `json:"product_id"`
LifecycleStatus string `json:"lifecycle_status"`
IsPublic bool `json:"is_public"`
SetPresent interface{} `json:"set_present"`
LadderCount int64 `json:"ladder_count"`
BillingShape string `json:"billing_shape"`
ConsumptionShape string `json:"consumption_shape"`
}
type Invoice struct {
InvoiceID string `json:"invoice_id"`
BillingAccountID string `json:"billing_account_id"`
SubscriptionID uuid.NullUUID `json:"subscription_id"`
Status string `json:"status"`
AmountDue int32 `json:"amount_due"`
AmountPaid int32 `json:"amount_paid"`
Currency string `json:"currency"`
PeriodStart sql.NullTime `json:"period_start"`
PeriodEnd sql.NullTime `json:"period_end"`
DueDate sql.NullTime `json:"due_date"`
PaidAt sql.NullTime `json:"paid_at"`
VoidedAt sql.NullTime `json:"voided_at"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
InvoiceNumber sql.NullString `json:"invoice_number"`
}
type InvoiceLineItem struct {
LineItemID string `json:"line_item_id"`
InvoiceID string `json:"invoice_id"`
SubscriptionItemID uuid.NullUUID `json:"subscription_item_id"`
PriceID string `json:"price_id"`
Amount int32 `json:"amount"`
Currency string `json:"currency"`
Description sql.NullString `json:"description"`
Quantity int32 `json:"quantity"`
PeriodStart sql.NullTime `json:"period_start"`
PeriodEnd sql.NullTime `json:"period_end"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type Payment struct {
PaymentID string `json:"payment_id"`
InvoiceID string `json:"invoice_id"`
BillingAccountID string `json:"billing_account_id"`
PaymentMethodID uuid.NullUUID `json:"payment_method_id"`
Amount int32 `json:"amount"`
Currency string `json:"currency"`
Status string `json:"status"`
FailedAt sql.NullTime `json:"failed_at"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type PaymentMethod struct {
PaymentMethodID string `json:"payment_method_id"`
BillingAccountID string `json:"billing_account_id"`
PmType string `json:"pm_type"`
CardBrand sql.NullString `json:"card_brand"`
CardLast4 sql.NullString `json:"card_last4"`
CardExpMonth sql.NullInt32 `json:"card_exp_month"`
CardExpYear sql.NullInt32 `json:"card_exp_year"`
Funding sql.NullString `json:"funding"`
IsDefault bool `json:"is_default"`
DetachedAt sql.NullTime `json:"detached_at"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type PlanLadder struct {
PlanLadderID string `json:"plan_ladder_id"`
Key sql.NullString `json:"key"`
Name string `json:"name"`
Description sql.NullString `json:"description"`
IsActive bool `json:"is_active"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
SortOrder int32 `json:"sort_order"`
}
type PlanLadderTier struct {
PlanLadderID string `json:"plan_ladder_id"`
ProductID string `json:"product_id"`
Rank int32 `json:"rank"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type Price struct {
PriceID string `json:"price_id"`
ProductID string `json:"product_id"`
Currency string `json:"currency"`
UnitAmount int32 `json:"unit_amount"`
RecurringInterval sql.NullString `json:"recurring_interval"`
TrialPeriodDays sql.NullInt32 `json:"trial_period_days"`
IsActive bool `json:"is_active"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
IsDefault bool `json:"is_default"`
UsageType sql.NullString `json:"usage_type"`
Key sql.NullString `json:"key"`
}
type Product struct {
ProductID string `json:"product_id"`
Name string `json:"name"`
Description sql.NullString `json:"description"`
// Presentation-layer grouping only (Doc 41 Decision 136): storefront sections and operator filters. No code may branch on this value for behavior — structural facts live in plan_ladder_tiers and per-price columns.
DisplayCategory sql.NullString `json:"display_category"`
Metadata pqtype.NullRawMessage `json:"metadata"`
IsActive bool `json:"is_active"`
IsPublic bool `json:"is_public"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
EntitlementSetID uuid.NullUUID `json:"entitlement_set_id"`
LifecycleStatus string `json:"lifecycle_status"`
Key sql.NullString `json:"key"`
}
type Subscription struct {
SubscriptionID string `json:"subscription_id"`
BillingAccountID string `json:"billing_account_id"`
Status string `json:"status"`
CurrentPeriodStart sql.NullTime `json:"current_period_start"`
CurrentPeriodEnd sql.NullTime `json:"current_period_end"`
CancelAtPeriodEnd bool `json:"cancel_at_period_end"`
CanceledAt sql.NullTime `json:"canceled_at"`
EndedAt sql.NullTime `json:"ended_at"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
CommitmentEnd sql.NullTime `json:"commitment_end"`
CommitmentRenewal sql.NullString `json:"commitment_renewal"`
EarlyTerminationPolicy sql.NullString `json:"early_termination_policy"`
}
type SubscriptionChange struct {
ChangeID string `json:"change_id"`
SubscriptionID string `json:"subscription_id"`
PreviousStatus sql.NullString `json:"previous_status"`
NewStatus string `json:"new_status"`
StripeEventID string `json:"stripe_event_id"`
ChangedAt time.Time `json:"changed_at"`
}
type SubscriptionItem struct {
SubscriptionItemID string `json:"subscription_item_id"`
SubscriptionID string `json:"subscription_id"`
ProductID string `json:"product_id"`
PriceID string `json:"price_id"`
Quantity int32 `json:"quantity"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type SubscriptionScheduledChange struct {
ScheduledChangeID string `json:"scheduled_change_id"`
SubscriptionID string `json:"subscription_id"`
ChangeType string `json:"change_type"`
TargetPriceID uuid.NullUUID `json:"target_price_id"`
TargetQuantity sql.NullInt32 `json:"target_quantity"`
EffectiveAt time.Time `json:"effective_at"`
EffectiveTrigger string `json:"effective_trigger"`
CreditDisposition sql.NullString `json:"credit_disposition"`
Status string `json:"status"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}