Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Document } from 'mongoose'; @Schema({ timestamps: true, collection: 'payment_provider_regions' }) export class PaymentProviderRegion extends Document { @Prop({ required: true, unique: true, index: true }) countryCode: string; // ISO 2-letter, e.g. 'IN', 'US', 'GB' @Prop({ required: true, enum: ['Stripe', 'Easebuzz'] }) primaryProvider: string; @Prop({ enum: ['Stripe', 'Easebuzz'], default: null }) fallbackProvider: string; @Prop({ default: true }) isActive: boolean; createdAt: Date; updatedAt: Date; } export const PaymentProviderRegionSchema = SchemaFactory.createForClass( PaymentProviderRegion, ); @Schema({ timestamps: true, collection: 'payment_routing_rules' }) export class PaymentRoutingRule extends Document { @Prop({ required: true, index: true }) tenantId: string; @Prop({ required: true }) name: string; @Prop({ required: true }) countryCode: string; // or '*' for catch-all @Prop({ required: true, enum: ['Stripe', 'Easebuzz'] }) providerName: string; @Prop({ default: 0 }) priority: number; @Prop({ default: true }) isActive: boolean; createdAt: Date; updatedAt: Date; } export const PaymentRoutingRuleSchema = SchemaFactory.createForClass(PaymentRoutingRule); @Schema({ timestamps: true, collection: 'payment_routing_decisions' }) export class PaymentRoutingDecision extends Document { @Prop({ required: true, index: true }) tenantId: string; @Prop({ required: true }) billingCountry: string; @Prop({ required: true }) amount: number; @Prop({ required: true }) currency: string; @Prop({ required: true }) routedProvider: string; // Stripe or Easebuzz @Prop({ default: null }) routingRuleId: string; @Prop({ default: null }) reason: string; createdAt: Date; } export const PaymentRoutingDecisionSchema = SchemaFactory.createForClass( PaymentRoutingDecision, ); PaymentRoutingDecisionSchema.index({ tenantId: 1, routedProvider: 1 }); |