feat(saas): implement marketplace and tenant onboarding
This commit is contained in:
@@ -299,35 +299,6 @@ internal sealed class CouponRedemptionConfiguration : IEntityTypeConfiguration<C
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class TenantSubscriptionConfiguration : IEntityTypeConfiguration<TenantSubscription>
|
||||
{
|
||||
public void Configure(EntityTypeBuilder<TenantSubscription> builder)
|
||||
{
|
||||
builder.ConfigureTenantEntity("tenant_subscriptions");
|
||||
builder.ConfigureTimestamps();
|
||||
builder.Property(entity => entity.PlanCode).HasMaxLength(100);
|
||||
builder.Property(entity => entity.Status).HasSnakeCaseEnum();
|
||||
builder.Property(entity => entity.BillingCycle).HasMaxLength(50);
|
||||
builder.Property(entity => entity.Metadata).IsJson("{}");
|
||||
builder.HasIndex(entity => new { entity.TenantId, entity.Status, entity.ExpiresAt });
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class TenantUsageRecordConfiguration : IEntityTypeConfiguration<TenantUsageRecord>
|
||||
{
|
||||
public void Configure(EntityTypeBuilder<TenantUsageRecord> builder)
|
||||
{
|
||||
builder.ConfigureEntity("tenant_usage_records");
|
||||
builder.HasAlternateKey(entity => new { entity.TenantId, entity.Id });
|
||||
builder.Property(entity => entity.MetricKey).HasMaxLength(100);
|
||||
builder.Property(entity => entity.MetricValue).HasPrecision(18, 4);
|
||||
builder.Property(entity => entity.Metadata).IsJson("{}");
|
||||
builder.Property(entity => entity.CreatedAt).HasDefaultValueSql("now()");
|
||||
builder.HasIndex(entity => new { entity.TenantId, entity.MetricKey, entity.PeriodStart, entity.PeriodEnd });
|
||||
builder.HasOne<Tenant>().WithMany().HasForeignKey(entity => entity.TenantId).OnDelete(DeleteBehavior.Cascade);
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class CommerceRefundRequestConfiguration : IEntityTypeConfiguration<CommerceRefundRequest>
|
||||
{
|
||||
public void Configure(EntityTypeBuilder<CommerceRefundRequest> builder)
|
||||
|
||||
Reference in New Issue
Block a user