1
0
mirror of https://github.com/bitwarden/server.git synced 2025-07-02 00:22:50 -05:00

[AC-1943] Add ProviderInvoiceItem table (#4163)

* Add ProviderInvoiceItem table

* Run dotnet format
This commit is contained in:
Alex Morask
2024-06-06 13:25:13 -04:00
committed by GitHub
parent fef34d845f
commit 725fc2eed3
28 changed files with 8765 additions and 0 deletions

View File

@ -0,0 +1,21 @@
using Bit.Infrastructure.EntityFramework.Billing.Models;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace Bit.Infrastructure.EntityFramework.Billing.Configurations;
public class ProviderInvoiceItemEntityTypeConfiguration : IEntityTypeConfiguration<ProviderInvoiceItem>
{
public void Configure(EntityTypeBuilder<ProviderInvoiceItem> builder)
{
builder
.Property(t => t.Id)
.ValueGeneratedNever();
builder
.HasIndex(providerInvoiceItem => new { providerInvoiceItem.Id, providerInvoiceItem.InvoiceId })
.IsUnique();
builder.ToTable(nameof(ProviderInvoiceItem));
}
}

View File

@ -0,0 +1,18 @@
using AutoMapper;
using Bit.Infrastructure.EntityFramework.AdminConsole.Models.Provider;
namespace Bit.Infrastructure.EntityFramework.Billing.Models;
// ReSharper disable once ClassWithVirtualMembersNeverInherited.Global
public class ProviderInvoiceItem : Core.Billing.Entities.ProviderInvoiceItem
{
public virtual Provider Provider { get; set; }
}
public class ProviderInvoiceItemMapperProfile : Profile
{
public ProviderInvoiceItemMapperProfile()
{
CreateMap<Core.Billing.Entities.ProviderInvoiceItem, ProviderInvoiceItem>().ReverseMap();
}
}

View File

@ -3,6 +3,7 @@ using Bit.Infrastructure.EntityFramework.AdminConsole.Models.Provider;
namespace Bit.Infrastructure.EntityFramework.Billing.Models;
// ReSharper disable once ClassWithVirtualMembersNeverInherited.Global
public class ProviderPlan : Core.Billing.Entities.ProviderPlan
{
public virtual Provider Provider { get; set; }

View File

@ -0,0 +1,46 @@
using AutoMapper;
using Bit.Core.Billing.Entities;
using Bit.Core.Billing.Repositories;
using Bit.Infrastructure.EntityFramework.Repositories;
using LinqToDB;
using Microsoft.Extensions.DependencyInjection;
using EFProviderInvoiceItem = Bit.Infrastructure.EntityFramework.Billing.Models.ProviderInvoiceItem;
namespace Bit.Infrastructure.EntityFramework.Billing.Repositories;
public class ProviderInvoiceItemRepository(
IMapper mapper,
IServiceScopeFactory serviceScopeFactory)
: Repository<ProviderInvoiceItem, EFProviderInvoiceItem, Guid>(
serviceScopeFactory,
mapper,
context => context.ProviderInvoiceItems), IProviderInvoiceItemRepository
{
public async Task<ProviderInvoiceItem> GetByInvoiceId(string invoiceId)
{
using var serviceScope = ServiceScopeFactory.CreateScope();
var databaseContext = GetDatabaseContext(serviceScope);
var query =
from providerInvoiceItem in databaseContext.ProviderInvoiceItems
where providerInvoiceItem.InvoiceId == invoiceId
select providerInvoiceItem;
return await query.FirstOrDefaultAsync();
}
public async Task<ICollection<ProviderInvoiceItem>> GetByProviderId(Guid providerId)
{
using var serviceScope = ServiceScopeFactory.CreateScope();
var databaseContext = GetDatabaseContext(serviceScope);
var query =
from providerInvoiceItem in databaseContext.ProviderInvoiceItems
where providerInvoiceItem.ProviderId == providerId
select providerInvoiceItem;
return await query.ToArrayAsync();
}
}

View File

@ -88,6 +88,7 @@ public static class EntityFrameworkServiceCollectionExtensions
services.AddSingleton<IOrganizationDomainRepository, OrganizationDomainRepository>();
services.AddSingleton<IWebAuthnCredentialRepository, WebAuthnCredentialRepository>();
services.AddSingleton<IProviderPlanRepository, ProviderPlanRepository>();
services.AddSingleton<IProviderInvoiceItemRepository, ProviderInvoiceItemRepository>();
if (selfHosted)
{

View File

@ -67,6 +67,7 @@ public class DatabaseContext : DbContext
public DbSet<OrganizationDomain> OrganizationDomains { get; set; }
public DbSet<WebAuthnCredential> WebAuthnCredentials { get; set; }
public DbSet<ProviderPlan> ProviderPlans { get; set; }
public DbSet<ProviderInvoiceItem> ProviderInvoiceItems { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{