| package schema |
|
|
| import ( |
| "entgo.io/ent" |
| "entgo.io/ent/dialect" |
| "entgo.io/ent/dialect/entsql" |
| "entgo.io/ent/schema" |
| "entgo.io/ent/schema/edge" |
| "entgo.io/ent/schema/field" |
| "entgo.io/ent/schema/index" |
| "github.com/alpacahq/alpacadecimal" |
|
|
| "github.com/openmeterio/openmeter/openmeter/billing" |
| "github.com/openmeterio/openmeter/openmeter/billing/charges/models/chargemeta" |
| "github.com/openmeterio/openmeter/openmeter/billing/charges/models/creditrealization" |
| "github.com/openmeterio/openmeter/openmeter/billing/charges/models/invoicedusage" |
| "github.com/openmeterio/openmeter/openmeter/billing/charges/models/payment" |
| "github.com/openmeterio/openmeter/openmeter/billing/charges/usagebased" |
| "github.com/openmeterio/openmeter/openmeter/billing/models/stddetailedline" |
| "github.com/openmeterio/openmeter/openmeter/billing/models/totals" |
| "github.com/openmeterio/openmeter/openmeter/productcatalog" |
| "github.com/openmeterio/openmeter/pkg/framework/entutils" |
| "github.com/openmeterio/openmeter/pkg/models" |
| ) |
|
|
| type ChargeUsageBased struct { |
| ent.Schema |
| } |
|
|
| func (ChargeUsageBased) Mixin() []ent.Mixin { |
| return []ent.Mixin{ |
| chargemeta.Mixin{}, |
| } |
| } |
|
|
| func (ChargeUsageBased) Fields() []ent.Field { |
| return []ent.Field{ |
| field.Time("invoice_at"), |
|
|
| field.Enum("settlement_mode"). |
| GoType(productcatalog.SettlementMode("")). |
| Immutable(), |
|
|
| field.Time("intent_deleted_at"). |
| Optional(). |
| Nillable(), |
|
|
| field.String("discounts"). |
| GoType(&billing.Discounts{}). |
| ValueScanner(BillingDiscountsValueScanner). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "jsonb", |
| }). |
| Optional(). |
| Nillable(), |
|
|
| field.String("feature_key"). |
| NotEmpty(). |
| Immutable(), |
|
|
| field.String("feature_id"). |
| NotEmpty(). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "char(26)", |
| }), |
|
|
| field.Enum("rating_engine"). |
| GoType(usagebased.RatingEngine("")), |
|
|
| field.String("price"). |
| GoType(&productcatalog.Price{}). |
| ValueScanner(PriceValueScanner). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "jsonb", |
| }), |
|
|
| |
| |
| |
| |
| field.String("unit_config"). |
| GoType(&productcatalog.UnitConfig{}). |
| ValueScanner(UnitConfigValueScanner). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "jsonb", |
| }). |
| Optional(). |
| Nillable(), |
|
|
| field.String("current_realization_run_id"). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "char(26)", |
| }). |
| Optional(). |
| Nillable(), |
|
|
| field.Enum("status_detailed"). |
| GoType(usagebased.Status("")), |
| } |
| } |
|
|
| func (ChargeUsageBased) Edges() []ent.Edge { |
| return []ent.Edge{ |
| edge.To("runs", ChargeUsageBasedRuns.Type). |
| Annotations(entsql.OnDelete(entsql.Cascade)), |
| edge.To("detailed_lines", ChargeUsageBasedRunDetailedLine.Type). |
| Annotations(entsql.OnDelete(entsql.Cascade)), |
| edge.To("current_run", ChargeUsageBasedRuns.Type). |
| Field("current_realization_run_id"). |
| Unique(), |
| edge.To("charge", Charge.Type). |
| Unique(). |
| Immutable(). |
| Annotations(entsql.OnDelete(entsql.Cascade)), |
| edge.To("intent_override", ChargeUsageBasedOverride.Type). |
| Unique(). |
| Annotations(entsql.OnDelete(entsql.Cascade)), |
| edge.From("subscription", Subscription.Type). |
| Ref("charges_usage_based"). |
| Field("subscription_id"). |
| Unique(). |
| Immutable(), |
| edge.From("subscription_phase", SubscriptionPhase.Type). |
| Ref("charges_usage_based"). |
| Field("subscription_phase_id"). |
| Unique(). |
| Immutable(), |
| edge.From("subscription_item", SubscriptionItem.Type). |
| Ref("charges_usage_based"). |
| Field("subscription_item_id"). |
| Unique(), |
| edge.From("customer", Customer.Type). |
| Field("customer_id"). |
| Ref("charges_usage_based"). |
| Unique(). |
| Required(). |
| Immutable(), |
| edge.From("feature", Feature.Type). |
| Field("feature_id"). |
| Ref("usage_based_charges"). |
| Unique(). |
| Required(), |
| edge.From("tax_code", TaxCode.Type). |
| Ref("charge_usage_based"). |
| Field("tax_code_id"). |
| Unique(). |
| Required(). |
| Immutable(). |
| |
| Annotations(entsql.OnDelete(entsql.Restrict)), |
| } |
| } |
|
|
| func (ChargeUsageBased) Indexes() []ent.Index { |
| return []ent.Index{ |
| index.Fields("tax_code_id"). |
| StorageKey("chargeusagebased_tax_code_id"), |
| } |
| } |
|
|
| func (ChargeUsageBased) Annotations() []schema.Annotation { |
| return []schema.Annotation{ |
| entsql.Annotation{Table: "charge_usage_based"}, |
| } |
| } |
|
|
| type ChargeUsageBasedOverride struct { |
| ent.Schema |
| } |
|
|
| func (ChargeUsageBasedOverride) Mixin() []ent.Mixin { |
| return []ent.Mixin{ |
| entutils.NamespaceMixin{}, |
| entutils.IDMixin{}, |
| } |
| } |
|
|
| func (ChargeUsageBasedOverride) Fields() []ent.Field { |
| return []ent.Field{ |
| |
| |
| field.String("charge_id"). |
| Immutable(). |
| Unique(). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "char(26)", |
| }), |
|
|
| field.String("name"). |
| NotEmpty(), |
| field.String("description"). |
| Optional(). |
| Nillable(), |
| field.String("metadata"). |
| GoType(&models.Metadata{}). |
| ValueScanner(entutils.JSONStringValueScanner[*models.Metadata]()). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "jsonb", |
| }). |
| Optional(). |
| Nillable(), |
|
|
| field.String("tax_behavior"). |
| GoType(productcatalog.TaxBehavior("")). |
| Optional(). |
| Nillable(). |
| Deprecated("tax config overrides are not supported; use the base charge intent"), |
| field.String("tax_code_id"). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "char(26)", |
| }). |
| Optional(). |
| Nillable(). |
| Deprecated("tax config overrides are not supported; use the base charge intent"), |
|
|
| field.Time("intent_deleted_at"). |
| Optional(). |
| Nillable(), |
|
|
| field.Time("service_period_from"), |
| field.Time("service_period_to"), |
| field.Time("full_service_period_from"), |
| field.Time("full_service_period_to"), |
| field.Time("billing_period_from"), |
| field.Time("billing_period_to"), |
| field.Time("invoice_at"), |
|
|
| field.String("feature_key"). |
| Optional(). |
| NotEmpty(). |
| Nillable(). |
| Deprecated("feature key overrides are not supported; use the base usage-based charge intent"), |
| field.String("price"). |
| GoType(&productcatalog.Price{}). |
| ValueScanner(PriceValueScanner). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "jsonb", |
| }), |
| field.String("discounts"). |
| GoType(&billing.Discounts{}). |
| ValueScanner(BillingDiscountsValueScanner). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "jsonb", |
| }), |
| field.String("unit_config"). |
| GoType(&productcatalog.UnitConfig{}). |
| ValueScanner(UnitConfigValueScanner). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "jsonb", |
| }). |
| Optional(). |
| Nillable(), |
| } |
| } |
|
|
| func (ChargeUsageBasedOverride) Indexes() []ent.Index { |
| return []ent.Index{ |
| index.Fields("tax_code_id"). |
| StorageKey("chargeusagebasedoverrides_tax_code_id"), |
| index.Fields("namespace", "charge_id").Unique(), |
| } |
| } |
|
|
| func (ChargeUsageBasedOverride) Edges() []ent.Edge { |
| return []ent.Edge{ |
| edge.From("usage_based", ChargeUsageBased.Type). |
| Ref("intent_override"). |
| Field("charge_id"). |
| Unique(). |
| Required(). |
| Immutable(), |
| edge.From("tax_code", TaxCode.Type). |
| Ref("charge_usage_based_overrides"). |
| Field("tax_code_id"). |
| Unique(). |
| Annotations(entsql.OnDelete(entsql.Restrict)), |
| } |
| } |
|
|
| type ChargeUsageBasedRuns struct { |
| ent.Schema |
| } |
|
|
| func (ChargeUsageBasedRuns) Mixin() []ent.Mixin { |
| return []ent.Mixin{ |
| entutils.NamespaceMixin{}, |
| entutils.IDMixin{}, |
| entutils.TimeMixin{}, |
| totals.Mixin{}, |
| } |
| } |
|
|
| func (ChargeUsageBasedRuns) Fields() []ent.Field { |
| return []ent.Field{ |
| field.String("charge_id"). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "char(26)", |
| }). |
| Immutable(), |
|
|
| field.String("feature_id"). |
| NotEmpty(). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "char(26)", |
| }). |
| Immutable(). |
| Comment("For future-proofing runs may diverge from the charge feature later, but today this matches the parent charge feature_id."), |
|
|
| field.Enum("type"). |
| GoType(usagebased.RealizationRunType("")), |
|
|
| field.Enum("initial_type"). |
| GoType(usagebased.RealizationRunType("")). |
| Immutable(), |
|
|
| field.Time("stored_at_lt"), |
|
|
| field.Time("service_period_to"). |
| Immutable(), |
|
|
| field.Bool("detailed_lines_present"), |
|
|
| field.String("line_id"). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "char(26)", |
| }). |
| Optional(). |
| NotEmpty(). |
| Nillable(), |
|
|
| field.String("invoice_id"). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "char(26)", |
| }). |
| Optional(). |
| NotEmpty(). |
| Nillable(). |
| Immutable(), |
|
|
| field.Other("metered_quantity", alpacadecimal.Decimal{}). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "numeric", |
| }), |
|
|
| field.Bool("no_fiat_transaction_required"), |
| } |
| } |
|
|
| func (ChargeUsageBasedRuns) Edges() []ent.Edge { |
| return []ent.Edge{ |
| edge.From("usage_based", ChargeUsageBased.Type). |
| Ref("runs"). |
| Field("charge_id"). |
| Unique(). |
| Required(). |
| Immutable(), |
| edge.From("feature", Feature.Type). |
| Field("feature_id"). |
| Ref("usage_based_runs"). |
| Unique(). |
| Required(). |
| Immutable(), |
| edge.From("billing_invoice_line", BillingInvoiceLine.Type). |
| Ref("charge_usage_based_run"). |
| Field("line_id"). |
| Unique(). |
| Annotations(entsql.OnDelete(entsql.SetNull)), |
| edge.From("billing_invoice", BillingInvoice.Type). |
| Ref("charge_usage_based_runs"). |
| Field("invoice_id"). |
| Unique(). |
| Immutable(). |
| Annotations(entsql.OnDelete(entsql.SetNull)), |
| edge.To("credit_allocations", ChargeUsageBasedRunCreditAllocations.Type). |
| StorageKey(edge.Symbol("charge_ub_run_credit_alloc_run")). |
| Annotations(entsql.OnDelete(entsql.Cascade)), |
| edge.To("detailed_lines", ChargeUsageBasedRunDetailedLine.Type). |
| Annotations(entsql.OnDelete(entsql.Cascade)), |
| edge.To("corrected_detailed_lines", ChargeUsageBasedRunDetailedLine.Type). |
| StorageKey(edge.Symbol("cub_run_corrected_detailed_lines")). |
| Annotations(entsql.OnDelete(entsql.SetNull)), |
| edge.To("invoiced_usage", ChargeUsageBasedRunInvoicedUsage.Type). |
| Unique(). |
| Annotations(entsql.OnDelete(entsql.Cascade)), |
| edge.To("payment", ChargeUsageBasedRunPayment.Type). |
| Unique(). |
| Annotations(entsql.OnDelete(entsql.Cascade)), |
| } |
| } |
|
|
| func (ChargeUsageBasedRuns) Indexes() []ent.Index { |
| return []ent.Index{ |
| index.Fields("namespace", "charge_id"), |
| } |
| } |
|
|
| type ChargeUsageBasedRunDetailedLine struct { |
| ent.Schema |
| } |
|
|
| func (ChargeUsageBasedRunDetailedLine) Mixin() []ent.Mixin { |
| return []ent.Mixin{ |
| stddetailedline.Mixin{}, |
| } |
| } |
|
|
| func (ChargeUsageBasedRunDetailedLine) Fields() []ent.Field { |
| return []ent.Field{ |
| field.String("charge_id"). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "char(26)", |
| }), |
|
|
| field.String("run_id"). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "char(26)", |
| }), |
|
|
| field.String("pricer_reference_id"). |
| NotEmpty(), |
|
|
| field.String("corrects_run_id"). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "char(26)", |
| }). |
| Optional(). |
| NotEmpty(). |
| Nillable(), |
| } |
| } |
|
|
| func (ChargeUsageBasedRunDetailedLine) Edges() []ent.Edge { |
| return []ent.Edge{ |
| edge.From("charge", ChargeUsageBased.Type). |
| Ref("detailed_lines"). |
| Field("charge_id"). |
| Unique(). |
| Required(), |
| edge.From("run", ChargeUsageBasedRuns.Type). |
| Ref("detailed_lines"). |
| Field("run_id"). |
| Unique(). |
| Required(), |
| edge.From("corrects_run", ChargeUsageBasedRuns.Type). |
| Ref("corrected_detailed_lines"). |
| Field("corrects_run_id"). |
| Unique(). |
| Annotations(entsql.OnDelete(entsql.SetNull)), |
| } |
| } |
|
|
| func (ChargeUsageBasedRunDetailedLine) Indexes() []ent.Index { |
| return []ent.Index{ |
| index.Fields("namespace", "charge_id"), |
| index.Fields("namespace", "run_id"), |
| index.Fields("namespace", "charge_id", "run_id", "child_unique_reference_id"). |
| Annotations( |
| entsql.IndexWhere("deleted_at IS NULL"), |
| ). |
| StorageKey("chargeubdetailedline_ns_charge_run_child_id"). |
| Unique(), |
| } |
| } |
|
|
| func (ChargeUsageBasedRunDetailedLine) Annotations() []schema.Annotation { |
| return []schema.Annotation{ |
| entsql.Annotation{Table: "charge_usage_based_run_detailed_line"}, |
| } |
| } |
|
|
| type ChargeUsageBasedRunCreditAllocations struct { |
| ent.Schema |
| } |
|
|
| func (ChargeUsageBasedRunCreditAllocations) Mixin() []ent.Mixin { |
| return []ent.Mixin{ |
| creditrealization.Mixin{ |
| SelfReferenceType: ChargeUsageBasedRunCreditAllocations.Type, |
| }, |
| } |
| } |
|
|
| func (ChargeUsageBasedRunCreditAllocations) Fields() []ent.Field { |
| return []ent.Field{ |
| field.String("run_id"). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "char(26)", |
| }). |
| Immutable(), |
| } |
| } |
|
|
| func (ChargeUsageBasedRunCreditAllocations) Edges() []ent.Edge { |
| return []ent.Edge{ |
| edge.From("run", ChargeUsageBasedRuns.Type). |
| Ref("credit_allocations"). |
| Field("run_id"). |
| Unique(). |
| Required(). |
| Immutable(), |
| } |
| } |
|
|
| type ChargeUsageBasedRunInvoicedUsage struct { |
| ent.Schema |
| } |
|
|
| func (ChargeUsageBasedRunInvoicedUsage) Mixin() []ent.Mixin { |
| return []ent.Mixin{ |
| invoicedusage.Mixin{}, |
| } |
| } |
|
|
| func (ChargeUsageBasedRunInvoicedUsage) Fields() []ent.Field { |
| return []ent.Field{ |
| field.String("run_id"). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "char(26)", |
| }). |
| Immutable(), |
| } |
| } |
|
|
| func (ChargeUsageBasedRunInvoicedUsage) Edges() []ent.Edge { |
| return []ent.Edge{ |
| edge.From("run", ChargeUsageBasedRuns.Type). |
| Ref("invoiced_usage"). |
| Field("run_id"). |
| Unique(). |
| Required(). |
| Immutable(), |
| } |
| } |
|
|
| type ChargeUsageBasedRunPayment struct { |
| ent.Schema |
| } |
|
|
| func (ChargeUsageBasedRunPayment) Mixin() []ent.Mixin { |
| return []ent.Mixin{ |
| payment.InvoicedMixin{}, |
| } |
| } |
|
|
| func (ChargeUsageBasedRunPayment) Fields() []ent.Field { |
| return []ent.Field{ |
| field.String("run_id"). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "char(26)", |
| }). |
| Immutable(), |
| } |
| } |
|
|
| func (ChargeUsageBasedRunPayment) Edges() []ent.Edge { |
| return []ent.Edge{ |
| edge.From("run", ChargeUsageBasedRuns.Type). |
| Ref("payment"). |
| Field("run_id"). |
| Unique(). |
| Required(). |
| Immutable(), |
| } |
| } |
|
|