schema

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Dec 2, 2025 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CouponFieldMap

type CouponFieldMap struct {
	Code          string `yaml:"code"`           // Default: "code"
	DiscountType  string `yaml:"discount_type"`  // Default: "discount_type"
	DiscountValue string `yaml:"discount_value"` // Default: "discount_value"
	Currency      string `yaml:"currency"`       // Default: "currency"
	Scope         string `yaml:"scope"`          // Default: "scope"
	ProductIDs    string `yaml:"product_ids"`    // Default: "product_ids" (array/JSONB)
	PaymentMethod string `yaml:"payment_method"` // Default: "payment_method"
	AutoApply     string `yaml:"auto_apply"`     // Default: "auto_apply"
	AppliesAt     string `yaml:"applies_at"`     // Default: "applies_at"
	UsageLimit    string `yaml:"usage_limit"`    // Default: "usage_limit"
	UsageCount    string `yaml:"usage_count"`    // Default: "usage_count"
	StartsAt      string `yaml:"starts_at"`      // Default: "starts_at"
	ExpiresAt     string `yaml:"expires_at"`     // Default: "expires_at"
	Active        string `yaml:"active"`         // Default: "active"
	Metadata      string `yaml:"metadata"`       // Default: "metadata"
	CreatedAt     string `yaml:"created_at"`     // Default: "created_at"
	UpdatedAt     string `yaml:"updated_at"`     // Default: "updated_at"
}

CouponFieldMap maps Cedros Pay coupon fields to user's database columns.

type CouponMapping

type CouponMapping struct {
	TableName  string               `yaml:"table_name"`
	FieldMap   CouponFieldMap       `yaml:"field_map"`
	CustomSQL  *CustomSQLQueries    `yaml:"custom_sql"`
	Transforms map[string]Transform `yaml:"transforms"`
}

CouponMapping defines the mapping for coupons table.

type CouponSQLQueries

type CouponSQLQueries struct {
	TableName       string
	SelectOne       string
	ListActive      string
	SelectAutoApply string
	Insert          string
	Update          string
	IncrementUsage  string
	Delete          string
	ColumnMap       CouponFieldMap
}

CouponSQLQueries holds generated SQL queries for coupons.

type CustomSQLQueries

type CustomSQLQueries struct {
	Select     string `yaml:"select"`      // Custom SELECT query (use $1, $2 for params)
	Insert     string `yaml:"insert"`      // Custom INSERT query
	Update     string `yaml:"update"`      // Custom UPDATE query
	Delete     string `yaml:"delete"`      // Custom DELETE query
	ListActive string `yaml:"list_active"` // Custom query for listing active records
}

CustomSQLQueries allows users to override default SQL with custom queries. Useful for complex schemas with joins, views, or computed columns.

type Mapping

type Mapping struct {
	Products        ProductMapping         `yaml:"products"`
	Coupons         CouponMapping          `yaml:"coupons"`
	PaymentTracking PaymentTrackingMapping `yaml:"payment_tracking"`
}

Mapping defines how to map between user's database schema and Cedros Pay's expected structure.

func LoadMapping

func LoadMapping(path string) (*Mapping, error)

LoadMapping loads schema mapping from a YAML file.

type PaymentTrackingMapping

type PaymentTrackingMapping struct {
	CartQuotes        TableMapping `yaml:"cart_quotes"`
	RefundQuotes      TableMapping `yaml:"refund_quotes"`
	PaymentSignatures TableMapping `yaml:"payment_signatures"`
	AdminNonces       TableMapping `yaml:"admin_nonces"`
}

PaymentTrackingMapping defines mappings for payment tracking tables.

type PaymentTrackingSQLQueries

type PaymentTrackingSQLQueries struct {
	CartQuotesTable        string
	RefundQuotesTable      string
	PaymentSignaturesTable string
	AdminNoncesTable       string
}

PaymentTrackingSQLQueries holds table names for payment tracking.

type PostgresMapper

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

PostgresMapper generates SQL queries using schema mappings.

func NewPostgresMapper

func NewPostgresMapper(mapping *Mapping) *PostgresMapper

NewPostgresMapper creates a new Postgres schema mapper.

func (*PostgresMapper) CouponQueries

func (m *PostgresMapper) CouponQueries() *CouponSQLQueries

CouponQueries returns SQL queries for coupon operations.

func (*PostgresMapper) PaymentTrackingQueries

func (m *PostgresMapper) PaymentTrackingQueries() *PaymentTrackingSQLQueries

PaymentTrackingQueries returns table names for payment tracking.

func (*PostgresMapper) ProductQueries

func (m *PostgresMapper) ProductQueries() *ProductSQLQueries

ProductQueries returns SQL queries for product operations.

type ProductFieldMap

type ProductFieldMap struct {
	ID            string `yaml:"id"`              // Default: "id"
	Description   string `yaml:"description"`     // Default: "description"
	FiatAmount    string `yaml:"fiat_amount"`     // Default: "fiat_amount"
	FiatCurrency  string `yaml:"fiat_currency"`   // Default: "fiat_currency"
	StripePriceID string `yaml:"stripe_price_id"` // Default: "stripe_price_id"
	CryptoAmount  string `yaml:"crypto_amount"`   // Default: "crypto_amount"
	CryptoToken   string `yaml:"crypto_token"`    // Default: "crypto_token"
	CryptoAccount string `yaml:"crypto_account"`  // Default: "crypto_account"
	MemoTemplate  string `yaml:"memo_template"`   // Default: "memo_template"
	Metadata      string `yaml:"metadata"`        // Default: "metadata" (JSONB/JSON column)
	Active        string `yaml:"active"`          // Default: "active"
	CreatedAt     string `yaml:"created_at"`      // Default: "created_at"
	UpdatedAt     string `yaml:"updated_at"`      // Default: "updated_at"
}

ProductFieldMap maps Cedros Pay fields to user's database columns.

type ProductMapping

type ProductMapping struct {
	TableName  string               `yaml:"table_name"` // Table/collection name (default: "products")
	FieldMap   ProductFieldMap      `yaml:"field_map"`  // Field mappings
	CustomSQL  *CustomSQLQueries    `yaml:"custom_sql"` // Optional custom SQL for complex mappings
	Transforms map[string]Transform `yaml:"transforms"` // Field transformations
}

ProductMapping defines the mapping for products/resources table.

type ProductSQLQueries

type ProductSQLQueries struct {
	TableName             string
	SelectOne             string
	SelectByStripePriceID string
	ListActive            string
	Insert                string
	Update                string
	Delete                string
	ColumnMap             ProductFieldMap
}

ProductSQLQueries holds generated SQL queries for products.

type TableMapping

type TableMapping struct {
	TableName string            `yaml:"table_name"`
	FieldMap  map[string]string `yaml:"field_map"` // cedros_field -> user_column
}

TableMapping is a generic table/collection mapping.

type Transform

type Transform struct {
	Type   string      `yaml:"type"`   // "multiply", "divide", "json_field", "constant", "expression"
	Factor float64     `yaml:"factor"` // For multiply/divide
	Field  string      `yaml:"field"`  // For json_field extraction
	Value  interface{} `yaml:"value"`  // For constant transforms
	Expr   string      `yaml:"expr"`   // For SQL expressions (e.g., "CAST(price_cents AS FLOAT) / 100")
}

Transform defines how to transform a field value during read/write.

Jump to

Keyboard shortcuts

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