| package schema |
|
|
| import ( |
| "entgo.io/ent" |
| "entgo.io/ent/dialect" |
| "entgo.io/ent/dialect/entsql" |
| "entgo.io/ent/schema/edge" |
| "entgo.io/ent/schema/field" |
| "entgo.io/ent/schema/index" |
| "entgo.io/ent/schema/mixin" |
|
|
| "github.com/openmeterio/openmeter/openmeter/productcatalog" |
| "github.com/openmeterio/openmeter/openmeter/taxcode" |
| "github.com/openmeterio/openmeter/pkg/framework/entutils" |
| ) |
|
|
| |
| type TaxCode struct { |
| ent.Schema |
| } |
|
|
| func (TaxCode) Mixin() []ent.Mixin { |
| return []ent.Mixin{ |
| entutils.UniqueResourceMixin{}, |
| entutils.AnnotationsMixin{}, |
| } |
| } |
|
|
| func (TaxCode) Fields() []ent.Field { |
| return []ent.Field{ |
| field.String("app_mappings"). |
| GoType(&taxcode.TaxCodeAppMappings{}). |
| ValueScanner(TaxCodeAppMappingsValueScanner). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "jsonb", |
| }). |
| Optional(). |
| Nillable(), |
| } |
| } |
|
|
| func (TaxCode) Indexes() []ent.Index { |
| return []ent.Index{ |
| index.Fields("namespace", "key"). |
| Annotations( |
| entsql.IndexWhere("deleted_at IS NULL"), |
| ). |
| Unique(), |
| } |
| } |
|
|
| func (TaxCode) Edges() []ent.Edge { |
| return []ent.Edge{ |
| edge.To("billing_workflow_configs", BillingWorkflowConfig.Type), |
| edge.To("billing_customer_overrides", BillingCustomerOverride.Type), |
| edge.To("billing_invoice_lines", BillingInvoiceLine.Type), |
| edge.To("subscription_items", SubscriptionItem.Type), |
| edge.To("plan_rate_cards", PlanRateCard.Type), |
| edge.To("addon_rate_cards", AddonRateCard.Type), |
| edge.To("charge_flat_fees", ChargeFlatFee.Type), |
| edge.To("charge_flat_fee_overrides", ChargeFlatFeeOverride.Type), |
| edge.To("charge_usage_based", ChargeUsageBased.Type), |
| edge.To("charge_usage_based_overrides", ChargeUsageBasedOverride.Type), |
| edge.To("charge_credit_purchases", ChargeCreditPurchase.Type), |
| edge.To("organization_default_invoicing", OrganizationDefaultTaxCodes.Type). |
| StorageKey(edge.Symbol("org_dtc_invoicing_tax_code_fk")), |
| edge.To("organization_default_credit_grant", OrganizationDefaultTaxCodes.Type). |
| StorageKey(edge.Symbol("org_dtc_credit_grant_tax_code_fk")), |
| } |
| } |
|
|
| var TaxCodeAppMappingsValueScanner = entutils.JSONStringValueScanner[*taxcode.TaxCodeAppMappings]() |
|
|
| |
| type TaxMixin struct { |
| mixin.Schema |
| } |
|
|
| func (TaxMixin) Fields() []ent.Field { |
| return []ent.Field{ |
| field.String("tax_code_id"). |
| Optional(). |
| Nillable(). |
| SchemaType(map[string]string{ |
| dialect.Postgres: "char(26)", |
| }), |
| field.Enum("tax_behavior"). |
| GoType(productcatalog.TaxBehavior("")). |
| Optional(). |
| Nillable(), |
| } |
| } |
|
|
| func (TaxMixin) Indexes() []ent.Index { |
| return []ent.Index{ |
| index.Fields("tax_code_id"), |
| } |
| } |
|
|