Merge pull request #1497 from ONLYOFFICE/feature/affiliate-link

Billing: affiliateId to shopping link
This commit is contained in:
Pavel Bannov 2023-08-17 07:29:57 -07:00 committed by GitHub
commit 0ef27803da
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
47 changed files with 11783 additions and 111 deletions

View File

@ -32,7 +32,7 @@ public interface ITariffService
IDictionary<string, Dictionary<string, decimal>> GetProductPriceInfo(params string[] productIds);
IEnumerable<PaymentInfo> GetPayments(int tenantId);
Tariff GetTariff(int tenantId, bool withRequestToPaymentSystem = true, bool refresh = false);
Task<Uri> GetShoppingUri(int tenant, string currency = null, string language = null, string customerEmail = null, Dictionary<string, int> quantity = null, string backUrl = null);
Task<Uri> GetShoppingUri(int tenant, string affiliateId, string currency = null, string language = null, string customerEmail = null, Dictionary<string, int> quantity = null, string backUrl = null);
Uri GetShoppingUri(int? tenant, int quotaId, string affiliateId, string currency = null, string language = null, string customerId = null, string quantity = null);
Uri GetShoppingUri(string[] productIds, string affiliateId = null, string currency = null, string language = null, string customerId = null, string quantity = null);
void ClearCache(int tenantId);

View File

@ -473,7 +473,7 @@ public class TariffService : ITariffService
return payments;
}
public async Task<Uri> GetShoppingUri(int tenant, string currency = null, string language = null, string customerEmail = null, Dictionary<string, int> quantity = null, string backUrl = null)
public async Task<Uri> GetShoppingUri(int tenant, string affiliateId, string currency = null, string language = null, string customerEmail = null, Dictionary<string, int> quantity = null, string backUrl = null)
{
List<TenantQuota> newQuotas = new();
@ -497,7 +497,7 @@ public class TariffService : ITariffService
}
var hasQuantity = quantity != null && quantity.Any();
var key = "shopingurl_" + (hasQuantity ? string.Join('_', quantity.Keys.ToArray()) : "all");
var key = "shopingurl_" + (hasQuantity ? string.Join('_', quantity.Keys.ToArray()) : "all") + (!string.IsNullOrEmpty(affiliateId) ? "_" + affiliateId : "");
var url = _cache.Get<string>(key);
if (url == null)
{
@ -512,7 +512,7 @@ public class TariffService : ITariffService
_billingClient.GetPaymentUrl(
"__Tenant__",
productIds.ToArray(),
null,
affiliateId,
null,
!string.IsNullOrEmpty(currency) ? "__Currency__" : null,
!string.IsNullOrEmpty(language) ? "__Language__" : null,

View File

@ -39,6 +39,7 @@ public class TenantRegistrationInfo
public string PasswordHash { get; set; }
public EmployeeActivationStatus ActivationStatus { get; set; }
public string HostedRegion { get; set; }
public string PartnerId { get; set; }
public string AffiliateId { get; set; }
public TenantIndustry Industry { get; set; }
public bool Spam { get; set; }

View File

@ -192,6 +192,7 @@ public class DbTenantService : ITenantService
{
using var tenantDbContext = _dbContextFactory.CreateDbContext();
using var tx = await tenantDbContext.Database.BeginTransactionAsync();
DbTenant dbTenant = null;
if (!string.IsNullOrEmpty(tenant.MappedDomain))
{
@ -210,6 +211,7 @@ public class DbTenantService : ITenantService
if (tenant.Id == Tenant.DefaultTenant)
{
tenant.Version = await tenantDbContext.TenantVersion
.AsNoTracking()
.Where(r => r.DefaultVersion == 1 || r.Id == 0)
.OrderByDescending(r => r.Id)
.Select(r => r.Id)
@ -217,17 +219,21 @@ public class DbTenantService : ITenantService
tenant.LastModified = DateTime.UtcNow;
var dbTenant = _mapper.Map<Tenant, DbTenant>(tenant);
dbTenant = _mapper.Map<Tenant, DbTenant>(tenant);
dbTenant.Id = 0;
dbTenant = tenantDbContext.Tenants.Add(dbTenant).Entity;
var entity = tenantDbContext.Tenants.Add(dbTenant);
dbTenant = entity.Entity;
await tenantDbContext.SaveChangesAsync();
tenant.Id = dbTenant.Id;
entity.State = EntityState.Detached;
}
else
{
var dbTenant = await tenantDbContext.Tenants
dbTenant = await tenantDbContext.Tenants
.AsNoTracking()
.Where(r => r.Id == tenant.Id)
.FirstOrDefaultAsync();
@ -256,6 +262,32 @@ public class DbTenantService : ITenantService
await tenantDbContext.SaveChangesAsync();
}
if (string.IsNullOrEmpty(tenant.PartnerId) && string.IsNullOrEmpty(tenant.AffiliateId) && string.IsNullOrEmpty(tenant.Campaign))
{
var p = tenantDbContext.TenantPartner
.AsNoTracking()
.Where(r => r.TenantId == tenant.Id)
.FirstOrDefault();
if (p != null)
{
tenantDbContext.TenantPartner.Remove(p);
}
}
else
{
var tenantPartner = new DbTenantPartner
{
TenantId = tenant.Id,
PartnerId = tenant.PartnerId,
AffiliateId = tenant.AffiliateId,
Campaign = tenant.Campaign,
Tenant = dbTenant
};
tenantDbContext.TenantPartner.Add(tenantPartner);
}
await tx.CommitAsync();
}).GetAwaiter()
.GetResult();
@ -299,7 +331,7 @@ public class DbTenantService : ITenantService
await tx.CommitAsync();
}).GetAwaiter()
.GetResult();
.GetResult();
}
public IEnumerable<TenantVersion> GetTenantVersions()
@ -358,7 +390,7 @@ public class DbTenantService : ITenantService
}
await tenantDbContext.SaveChangesAsync();
await tx.CommitAsync();
}).GetAwaiter()
.GetResult();

View File

@ -30,6 +30,7 @@ public class TenantDbContext : DbContext
{
public DbSet<DbTenant> Tenants { get; set; }
public DbSet<DbTenantVersion> TenantVersion { get; set; }
public DbSet<DbTenantPartner> TenantPartner { get; set; }
public DbSet<DbTenantForbiden> TenantForbiden { get; set; }
public DbSet<TenantIpRestrictions> TenantIpRestrictions { get; set; }
public DbSet<DbCoreSettings> CoreSettings { get; set; }

View File

@ -71,7 +71,7 @@ public static class DbIPLookupExtension
.IsRequired()
.HasColumnName("addr_type")
.HasColumnType("enum('ipv4','ipv6')");
entity.Property(e => e.IPStart)
.IsRequired()
.HasColumnName("ip_start")
@ -150,6 +150,91 @@ public static class DbIPLookupExtension
}
public static void PgSqlAddDbIPLookup(this ModelBuilder modelBuilder)
{
throw new NotImplementedException();
modelBuilder.Entity<DbIPLookup>(entity =>
{
entity.ToTable("dbip_lookup")
.HasCharSet("utf8mb4");
entity.HasKey(nameof(DbIPLookup.AddrType), nameof(DbIPLookup.IPStart));
entity.Property(e => e.AddrType)
.IsRequired()
.HasColumnName("addr_type")
.HasColumnType("enum('ipv4','ipv6')");
entity.Property(e => e.IPStart)
.IsRequired()
.HasColumnName("ip_start")
.HasColumnType("varbinary(16)");
entity.Property(e => e.IPEnd)
.IsRequired()
.HasColumnName("ip_end")
.HasColumnType("varbinary(16)");
entity.Property(e => e.Continent)
.IsRequired()
.HasColumnName("continent")
.HasColumnType("char(2)");
entity.Property(e => e.Country)
.IsRequired()
.HasColumnName("country")
.HasColumnType("char(2)");
entity.Property(e => e.StateProvCode)
.HasColumnName("stateprov_code")
.HasColumnType("varchar(15)");
entity.Property(e => e.StateProv)
.IsRequired()
.HasColumnName("stateprov")
.HasColumnType("varchar(80)");
entity.Property(e => e.District)
.IsRequired()
.HasColumnName("district")
.HasColumnType("varchar(80)");
entity.Property(e => e.City)
.IsRequired()
.HasColumnName("city")
.HasColumnType("varchar(80)");
entity.Property(e => e.ZipCode)
.HasColumnName("zipcode")
.HasColumnType("varchar(20)");
entity.Property(e => e.Latitude)
.IsRequired()
.HasColumnName("latitude")
.HasColumnType("float");
entity.Property(e => e.Longitude)
.IsRequired()
.HasColumnName("longitude")
.HasColumnType("float");
entity.Property(e => e.GeonameId)
.IsRequired(false)
.HasColumnName("geoname_id")
.HasColumnType("int(10)");
entity.Property(e => e.TimezoneOffset)
.IsRequired()
.HasColumnType("float")
.HasColumnName("timezone_offset");
entity.Property(e => e.TimezoneName)
.IsRequired()
.HasColumnName("timezone_name")
.HasColumnType("varchar(64)");
entity.Property(e => e.WeatherCode)
.IsRequired()
.HasColumnName("weather_code")
.HasColumnType("varchar(10)");
});
}
}

View File

@ -60,7 +60,7 @@ public class DbTenant : IMapFrom<Tenant>
public bool Spam { get; set; }
public bool Calls { get; set; }
// public DbTenantPartner Partner { get; set; }
public DbTenantPartner Partner { get; set; }
public void Mapping(Profile profile)
{
@ -70,8 +70,15 @@ public class DbTenant : IMapFrom<Tenant>
.ForMember(dest => dest.Alias, opt => opt.MapFrom(dest => dest.Alias.ToLowerInvariant()))
.ForMember(dest => dest.LastModified, opt => opt.MapFrom(dest => DateTime.UtcNow))
.ForMember(dest => dest.Name, opt => opt.MapFrom(dest => dest.Name ?? ""))
.ForMember(dest => dest.MappedDomain, opt => opt.MapFrom(dest =>
!string.IsNullOrEmpty(dest.MappedDomain) ? dest.MappedDomain.ToLowerInvariant() : null));
.ForMember(dest => dest.Name, opt => opt.MapFrom(dest => dest.Name ?? ""))
.ForMember(dest => dest.Partner, opt => opt.MapFrom(dest => new DbTenantPartner
{
TenantId = dest.Id,
AffiliateId = dest.AffiliateId,
PartnerId = dest.PartnerId,
Campaign = dest.Campaign,
}))
.ForMember(dest => dest.MappedDomain, opt => opt.MapFrom(dest => !string.IsNullOrEmpty(dest.MappedDomain) ? dest.MappedDomain.ToLowerInvariant() : null));
}
}
@ -79,7 +86,10 @@ public static class DbTenantExtension
{
public static ModelBuilderWrapper AddDbTenant(this ModelBuilderWrapper modelBuilder)
{
modelBuilder.Entity<DbTenant>().Navigation(e => e.Partner).AutoInclude();
modelBuilder
.AddDbTenantPartner()
.Add(MySqlAddDbTenant, Provider.MySql)
.Add(PgSqlAddDbTenant, Provider.PostgreSql)
.HasData(
@ -99,10 +109,10 @@ public static class DbTenantExtension
public static void MySqlAddDbTenant(this ModelBuilder modelBuilder)
{
//modelBuilder.Entity<DbTenant>()
// .HasOne(r => r.Partner)
// .WithOne(r => r.Tenant)
// .HasPrincipalKey<DbTenant>(r => new { r.Id });
modelBuilder.Entity<DbTenant>()
.HasOne(r => r.Partner)
.WithOne(r => r.Tenant)
.HasPrincipalKey<DbTenant>(r => new { r.Id });
modelBuilder.Entity<DbTenant>(entity =>
{

View File

@ -0,0 +1,115 @@
// (c) Copyright Ascensio System SIA 2010-2022
//
// This program is a free software product.
// You can redistribute it and/or modify it under the terms
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
// any third-party rights.
//
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
//
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
//
// The interactive user interfaces in modified source and object code versions of the Program must
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
//
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
// trademark law for use of our trademarks.
//
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
namespace ASC.Core.Common.EF.Model;
public class DbTenantPartner
{
public int TenantId { get; set; }
public string PartnerId { get; set; }
public string AffiliateId { get; set; }
public string Campaign { get; set; }
public DbTenant Tenant { get; set; }
}
public static class DbTenantPartnerExtension
{
public static ModelBuilderWrapper AddDbTenantPartner(this ModelBuilderWrapper modelBuilder)
{
modelBuilder
.Add(MySqlAddDbTenantPartner, Provider.MySql)
.Add(PgSqlAddDbTenantPartner, Provider.PostgreSql);
return modelBuilder;
}
public static void MySqlAddDbTenantPartner(this ModelBuilder modelBuilder)
{
modelBuilder.Entity<DbTenantPartner>().Navigation(e => e.Tenant).AutoInclude(false);
modelBuilder.Entity<DbTenantPartner>(entity =>
{
entity.HasKey(e => new { e.TenantId })
.HasName("PRIMARY");
entity.ToTable("tenants_partners")
.HasCharSet("utf8");
entity.Property(e => e.TenantId)
.HasColumnName("tenant_id")
.ValueGeneratedNever();
entity.Property(e => e.AffiliateId)
.HasColumnName("affiliate_id")
.HasColumnType("varchar(50)")
.HasCharSet("utf8")
.UseCollation("utf8_general_ci");
entity.Property(e => e.Campaign)
.HasColumnName("campaign")
.HasColumnType("varchar(50)")
.HasCharSet("utf8")
.UseCollation("utf8_general_ci");
entity.Property(e => e.PartnerId)
.HasColumnName("partner_id")
.HasColumnType("varchar(36)")
.HasCharSet("utf8")
.UseCollation("utf8_general_ci");
});
}
public static void PgSqlAddDbTenantPartner(this ModelBuilder modelBuilder)
{
modelBuilder.Entity<DbTenantPartner>(entity =>
{
entity.HasKey(e => new { e.TenantId })
.HasName("tenants_partners_pkey");
entity.ToTable("tenants_partners", "onlyoffice");
entity.Property(e => e.TenantId)
.HasColumnName("tenant_id")
.ValueGeneratedNever();
entity.Property(e => e.AffiliateId)
.HasColumnName("affiliate_id")
.HasMaxLength(50)
.HasDefaultValueSql("NULL");
entity.Property(e => e.Campaign)
.HasColumnName("campaign")
.HasMaxLength(50)
.HasDefaultValueSql("NULL");
entity.Property(e => e.PartnerId)
.HasColumnName("partner_id")
.HasMaxLength(36)
.HasDefaultValueSql("NULL");
});
}
}

View File

@ -135,6 +135,7 @@ public class HostedSolution
Language = registrationInfo.Culture.Name,
TimeZone = registrationInfo.TimeZoneInfo.Id,
HostedRegion = registrationInfo.HostedRegion,
PartnerId = registrationInfo.PartnerId,
AffiliateId = registrationInfo.AffiliateId,
Campaign = registrationInfo.Campaign,
Industry = registrationInfo.Industry,

View File

@ -60,6 +60,17 @@ public class Tenant : IMapFrom<DbTenant>
{
Id = id;
}
public void Mapping(Profile profile)
{
profile.CreateMap<DbTenant, Tenant>()
.ForMember(r => r.TrustedDomainsType, opt => opt.MapFrom(src => src.TrustedDomainsEnabled))
.ForMember(r => r.AffiliateId, opt => opt.MapFrom(src => src.Partner.AffiliateId))
.ForMember(r => r.PartnerId, opt => opt.MapFrom(src => src.Partner.PartnerId))
.ForMember(r => r.Campaign, opt => opt.MapFrom(src => src.Partner.Campaign));
profile.CreateMap<TenantUserSecurity, Tenant>()
.IncludeMembers(src => src.DbTenant);
}
public string AffiliateId { get; set; }
public string Alias { get; set; }
@ -74,6 +85,7 @@ public class Tenant : IMapFrom<DbTenant>
public string MappedDomain { get; set; }
public string Name { get; set; }
public Guid OwnerId { get; set; }
public string PartnerId { get; set; }
public string PaymentId { get; set; }
public bool Spam { get; set; }
public TenantStatus Status { get; internal set; }
@ -146,15 +158,6 @@ public class Tenant : IMapFrom<DbTenant>
return result;
}
public void Mapping(Profile profile)
{
profile.CreateMap<DbTenant, Tenant>()
.ForMember(r => r.TrustedDomainsType, opt => opt.MapFrom(src => src.TrustedDomainsEnabled));
profile.CreateMap<TenantUserSecurity, Tenant>()
.IncludeMembers(src => src.DbTenant);
}
public void SetStatus(TenantStatus status)
{
Status = status;

View File

@ -22,6 +22,9 @@
<ItemGroup>
<ProjectReference Include="..\..\..\migrations\mysql\SaaS\ASC.Migrations.MySql.SaaS.csproj" />
<ProjectReference Include="..\..\..\migrations\mysql\Standalone\ASC.Migrations.MySql.Standalone.csproj" />
<ProjectReference Include="..\..\..\migrations\postgre\SaaS\ASC.Migrations.PostgreSql.SaaS.csproj" />
<ProjectReference Include="..\..\..\migrations\postgre\Standalone\ASC.Migrations.PostgreSql.Standalone.csproj" />
<ProjectReference Include="..\..\..\products\ASC.Files\Core\ASC.Files.Core.csproj" />
<ProjectReference Include="..\..\ASC.ActiveDirectory\ASC.ActiveDirectory.csproj" />
<ProjectReference Include="..\..\ASC.Core.Common\ASC.Core.Common.csproj" />

View File

@ -221,6 +221,11 @@ public class PortalController : ControllerBase
info.AffiliateId = model.AffiliateId;
}
if (!string.IsNullOrEmpty(model.PartnerId))
{
info.PartnerId = model.PartnerId;
}
if (!string.IsNullOrEmpty(model.Campaign))
{
info.Campaign = model.Campaign;

View File

@ -35,6 +35,9 @@ public class TenantModel : IModel
[StringLength(255)]
public string AffiliateId { get; set; }
[StringLength(255)]
public string PartnerId { get; set; }
public string Campaign { get; set; }
[StringLength(255)]

View File

@ -0,0 +1,362 @@
// <auto-generated />
using System;
using ASC.Data.Backup.EF.Context;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace ASC.Migrations.MySql.Migrations.Backups
{
[DbContext(typeof(BackupsContext))]
[Migration("20230816180426_BackupsContext_Upgrade1")]
partial class BackupsContextUpgrade1
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 64);
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("id");
b.Property<string>("Alias")
.IsRequired()
.HasColumnType("varchar(100)")
.HasColumnName("alias")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<bool>("Calls")
.ValueGeneratedOnAdd()
.HasColumnType("tinyint(1)")
.HasColumnName("calls")
.HasDefaultValueSql("'1'");
b.Property<DateTime>("CreationDateTime")
.HasColumnType("datetime")
.HasColumnName("creationdatetime");
b.Property<int>("Industry")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("industry")
.HasDefaultValueSql("'0'");
b.Property<string>("Language")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("char(10)")
.HasColumnName("language")
.HasDefaultValueSql("'en-US'")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<DateTime>("LastModified")
.HasColumnType("timestamp")
.HasColumnName("last_modified");
b.Property<string>("MappedDomain")
.HasColumnType("varchar(100)")
.HasColumnName("mappeddomain")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("varchar(255)")
.HasColumnName("name")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("OwnerId")
.HasColumnType("varchar(38)")
.HasColumnName("owner_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("PaymentId")
.HasColumnType("varchar(38)")
.HasColumnName("payment_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<bool>("Spam")
.ValueGeneratedOnAdd()
.HasColumnType("tinyint(1)")
.HasColumnName("spam")
.HasDefaultValueSql("'1'");
b.Property<int>("Status")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("status")
.HasDefaultValueSql("'0'");
b.Property<DateTime?>("StatusChanged")
.HasColumnType("datetime")
.HasColumnName("statuschanged");
b.Property<string>("TimeZone")
.HasColumnType("varchar(50)")
.HasColumnName("timezone")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("TrustedDomainsEnabled")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("trusteddomainsenabled")
.HasDefaultValueSql("'1'");
b.Property<string>("TrustedDomainsRaw")
.HasColumnType("varchar(1024)")
.HasColumnName("trusteddomains")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("Version")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("version")
.HasDefaultValueSql("'2'");
b.Property<DateTime?>("Version_Changed")
.HasColumnType("datetime")
.HasColumnName("version_changed");
b.HasKey("Id");
b.HasIndex("Alias")
.IsUnique()
.HasDatabaseName("alias");
b.HasIndex("LastModified")
.HasDatabaseName("last_modified");
b.HasIndex("MappedDomain")
.HasDatabaseName("mappeddomain");
b.HasIndex("Version")
.HasDatabaseName("version");
b.ToTable("tenants_tenants", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
b.HasData(
new
{
Id = 1,
Alias = "localhost",
Calls = false,
CreationDateTime = new DateTime(2021, 3, 9, 17, 46, 59, 97, DateTimeKind.Utc).AddTicks(4317),
Industry = 0,
LastModified = new DateTime(2022, 7, 8, 0, 0, 0, 0, DateTimeKind.Unspecified),
Name = "Web Office",
OwnerId = "66faa6e4-f133-11ea-b126-00ffeec8b4ef",
Spam = false,
Status = 0,
TrustedDomainsEnabled = 0,
Version = 0
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.HasColumnType("int")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.HasColumnType("varchar(50)")
.HasColumnName("affiliate_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Campaign")
.HasColumnType("varchar(50)")
.HasColumnName("campaign")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("PartnerId")
.HasColumnType("varchar(36)")
.HasColumnName("partner_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.HasKey("TenantId")
.HasName("PRIMARY");
b.ToTable("tenants_partners", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Data.Backup.EF.Model.BackupRecord", b =>
{
b.Property<string>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("char(38)")
.HasColumnName("id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<DateTime>("CreatedOn")
.HasColumnType("datetime")
.HasColumnName("created_on");
b.Property<DateTime>("ExpiresOn")
.ValueGeneratedOnAdd()
.HasColumnType("datetime")
.HasColumnName("expires_on")
.HasDefaultValueSql("'0001-01-01 00:00:00'");
b.Property<string>("Hash")
.IsRequired()
.HasColumnType("varchar(64)")
.HasColumnName("hash")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<bool>("IsScheduled")
.HasColumnType("tinyint(1)")
.HasColumnName("is_scheduled");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("varchar(255)")
.HasColumnName("name")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<bool>("Removed")
.HasColumnType("tinyint(1)")
.HasColumnName("removed");
b.Property<string>("StorageBasePath")
.ValueGeneratedOnAdd()
.HasColumnType("varchar(255)")
.HasColumnName("storage_base_path")
.HasDefaultValueSql("NULL")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("StorageParams")
.ValueGeneratedOnAdd()
.HasColumnType("text")
.HasColumnName("storage_params")
.HasDefaultValueSql("NULL")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("StoragePath")
.IsRequired()
.HasColumnType("varchar(255)")
.HasColumnName("storage_path")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("StorageType")
.HasColumnType("int(10)")
.HasColumnName("storage_type");
b.Property<int>("TenantId")
.HasColumnType("int(10)")
.HasColumnName("tenant_id");
b.HasKey("Id")
.HasName("PRIMARY");
b.HasIndex("ExpiresOn")
.HasDatabaseName("expires_on");
b.HasIndex("IsScheduled")
.HasDatabaseName("is_scheduled");
b.HasIndex("TenantId")
.HasDatabaseName("tenant_id");
b.ToTable("backup_backup", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Data.Backup.EF.Model.BackupSchedule", b =>
{
b.Property<int>("TenantId")
.HasColumnType("int(10)")
.HasColumnName("tenant_id");
b.Property<int>("BackupsStored")
.HasColumnType("int(10)")
.HasColumnName("backups_stored");
b.Property<string>("Cron")
.IsRequired()
.HasColumnType("varchar(255)")
.HasColumnName("cron")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<DateTime>("LastBackupTime")
.HasColumnType("datetime")
.HasColumnName("last_backup_time");
b.Property<string>("StorageBasePath")
.ValueGeneratedOnAdd()
.HasColumnType("varchar(255)")
.HasColumnName("storage_base_path")
.HasDefaultValueSql("NULL")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("StorageParams")
.ValueGeneratedOnAdd()
.HasColumnType("text")
.HasColumnName("storage_params")
.HasDefaultValueSql("NULL")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("StorageType")
.HasColumnType("int(10)")
.HasColumnName("storage_type");
b.HasKey("TenantId")
.HasName("PRIMARY");
b.ToTable("backup_schedule", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.HasOne("ASC.Core.Common.EF.Model.DbTenant", "Tenant")
.WithOne("Partner")
.HasForeignKey("ASC.Core.Common.EF.Model.DbTenantPartner", "TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tenant");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Navigation("Partner");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,45 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ASC.Migrations.MySql.Migrations.Backups
{
/// <inheritdoc />
public partial class BackupsContextUpgrade1 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "tenants_partners",
columns: table => new
{
tenantid = table.Column<int>(name: "tenant_id", type: "int", nullable: false),
partnerid = table.Column<string>(name: "partner_id", type: "varchar(36)", nullable: true, collation: "utf8_general_ci")
.Annotation("MySql:CharSet", "utf8"),
affiliateid = table.Column<string>(name: "affiliate_id", type: "varchar(50)", nullable: true, collation: "utf8_general_ci")
.Annotation("MySql:CharSet", "utf8"),
campaign = table.Column<string>(type: "varchar(50)", nullable: true, collation: "utf8_general_ci")
.Annotation("MySql:CharSet", "utf8")
},
constraints: table =>
{
table.PrimaryKey("PRIMARY", x => x.tenantid);
table.ForeignKey(
name: "FK_tenants_partners_tenants_tenants_tenant_id",
column: x => x.tenantid,
principalTable: "tenants_tenants",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
})
.Annotation("MySql:CharSet", "utf8");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "tenants_partners");
}
}
}

View File

@ -168,6 +168,38 @@ namespace ASC.Migrations.MySql.Migrations.Backups
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.HasColumnType("int")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.HasColumnType("varchar(50)")
.HasColumnName("affiliate_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Campaign")
.HasColumnType("varchar(50)")
.HasColumnName("campaign")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("PartnerId")
.HasColumnType("varchar(36)")
.HasColumnName("partner_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.HasKey("TenantId")
.HasName("PRIMARY");
b.ToTable("tenants_partners", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Data.Backup.EF.Model.BackupRecord", b =>
{
b.Property<string>("Id")
@ -305,6 +337,22 @@ namespace ASC.Migrations.MySql.Migrations.Backups
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.HasOne("ASC.Core.Common.EF.Model.DbTenant", "Tenant")
.WithOne("Partner")
.HasForeignKey("ASC.Core.Common.EF.Model.DbTenantPartner", "TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tenant");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Navigation("Partner");
});
#pragma warning restore 612, 618
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,45 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ASC.Migrations.MySql.Migrations.FilesDb
{
/// <inheritdoc />
public partial class FilesDbContextUpgrade3 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "tenants_partners",
columns: table => new
{
tenantid = table.Column<int>(name: "tenant_id", type: "int", nullable: false),
partnerid = table.Column<string>(name: "partner_id", type: "varchar(36)", nullable: true, collation: "utf8_general_ci")
.Annotation("MySql:CharSet", "utf8"),
affiliateid = table.Column<string>(name: "affiliate_id", type: "varchar(50)", nullable: true, collation: "utf8_general_ci")
.Annotation("MySql:CharSet", "utf8"),
campaign = table.Column<string>(type: "varchar(50)", nullable: true, collation: "utf8_general_ci")
.Annotation("MySql:CharSet", "utf8")
},
constraints: table =>
{
table.PrimaryKey("PRIMARY", x => x.tenantid);
table.ForeignKey(
name: "FK_tenants_partners_tenants_tenants_tenant_id",
column: x => x.tenantid,
principalTable: "tenants_tenants",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
})
.Annotation("MySql:CharSet", "utf8");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "tenants_partners");
}
}
}

View File

@ -168,6 +168,38 @@ namespace ASC.Migrations.MySql.Migrations.FilesDb
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.HasColumnType("int")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.HasColumnType("varchar(50)")
.HasColumnName("affiliate_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Campaign")
.HasColumnType("varchar(50)")
.HasColumnName("campaign")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("PartnerId")
.HasColumnType("varchar(36)")
.HasColumnName("partner_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.HasKey("TenantId")
.HasName("PRIMARY");
b.ToTable("tenants_partners", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.FilesConverts", b =>
{
b.Property<string>("Input")
@ -3541,6 +3573,22 @@ namespace ASC.Migrations.MySql.Migrations.FilesDb
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.HasOne("ASC.Core.Common.EF.Model.DbTenant", "Tenant")
.WithOne("Partner")
.HasForeignKey("ASC.Core.Common.EF.Model.DbTenantPartner", "TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tenant");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Navigation("Partner");
});
#pragma warning restore 612, 618
}
}

View File

@ -0,0 +1,601 @@
// <auto-generated />
using System;
using ASC.MessagingSystem.EF.Context;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace ASC.Migrations.MySql.SaaS.Migrations.Messages
{
[DbContext(typeof(MessagesContext))]
[Migration("20230816180501_MessagesContext_Upgrade1")]
partial class MessagesContextUpgrade1
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 64);
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("id");
b.Property<string>("Alias")
.IsRequired()
.HasColumnType("varchar(100)")
.HasColumnName("alias")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<bool>("Calls")
.ValueGeneratedOnAdd()
.HasColumnType("tinyint(1)")
.HasColumnName("calls")
.HasDefaultValueSql("'1'");
b.Property<DateTime>("CreationDateTime")
.HasColumnType("datetime")
.HasColumnName("creationdatetime");
b.Property<int>("Industry")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("industry")
.HasDefaultValueSql("'0'");
b.Property<string>("Language")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("char(10)")
.HasColumnName("language")
.HasDefaultValueSql("'en-US'")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<DateTime>("LastModified")
.HasColumnType("timestamp")
.HasColumnName("last_modified");
b.Property<string>("MappedDomain")
.HasColumnType("varchar(100)")
.HasColumnName("mappeddomain")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("varchar(255)")
.HasColumnName("name")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("OwnerId")
.HasColumnType("varchar(38)")
.HasColumnName("owner_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("PaymentId")
.HasColumnType("varchar(38)")
.HasColumnName("payment_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<bool>("Spam")
.ValueGeneratedOnAdd()
.HasColumnType("tinyint(1)")
.HasColumnName("spam")
.HasDefaultValueSql("'1'");
b.Property<int>("Status")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("status")
.HasDefaultValueSql("'0'");
b.Property<DateTime?>("StatusChanged")
.HasColumnType("datetime")
.HasColumnName("statuschanged");
b.Property<string>("TimeZone")
.HasColumnType("varchar(50)")
.HasColumnName("timezone")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("TrustedDomainsEnabled")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("trusteddomainsenabled")
.HasDefaultValueSql("'1'");
b.Property<string>("TrustedDomainsRaw")
.HasColumnType("varchar(1024)")
.HasColumnName("trusteddomains")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("Version")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("version")
.HasDefaultValueSql("'2'");
b.Property<DateTime?>("Version_Changed")
.HasColumnType("datetime")
.HasColumnName("version_changed");
b.HasKey("Id");
b.HasIndex("Alias")
.IsUnique()
.HasDatabaseName("alias");
b.HasIndex("LastModified")
.HasDatabaseName("last_modified");
b.HasIndex("MappedDomain")
.HasDatabaseName("mappeddomain");
b.HasIndex("Version")
.HasDatabaseName("version");
b.ToTable("tenants_tenants", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
b.HasData(
new
{
Id = 1,
Alias = "localhost",
Calls = false,
CreationDateTime = new DateTime(2021, 3, 9, 17, 46, 59, 97, DateTimeKind.Utc).AddTicks(4317),
Industry = 0,
LastModified = new DateTime(2022, 7, 8, 0, 0, 0, 0, DateTimeKind.Unspecified),
Name = "Web Office",
OwnerId = "66faa6e4-f133-11ea-b126-00ffeec8b4ef",
Spam = false,
Status = 0,
TrustedDomainsEnabled = 0,
Version = 0
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.HasColumnType("int")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.HasColumnType("varchar(50)")
.HasColumnName("affiliate_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Campaign")
.HasColumnType("varchar(50)")
.HasColumnName("campaign")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("PartnerId")
.HasColumnType("varchar(36)")
.HasColumnName("partner_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.HasKey("TenantId")
.HasName("PRIMARY");
b.ToTable("tenants_partners", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbWebstudioSettings", b =>
{
b.Property<int>("TenantId")
.HasColumnType("int")
.HasColumnName("TenantID");
b.Property<string>("Id")
.HasColumnType("varchar(64)")
.HasColumnName("ID")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("UserId")
.HasColumnType("varchar(64)")
.HasColumnName("UserID")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Data")
.IsRequired()
.HasColumnType("mediumtext")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.HasKey("TenantId", "Id", "UserId")
.HasName("PRIMARY");
b.HasIndex("Id")
.HasDatabaseName("ID");
b.ToTable("webstudio_settings", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
b.HasData(
new
{
TenantId = 1,
Id = "9a925891-1f92-4ed7-b277-d6f649739f06",
UserId = "00000000-0000-0000-0000-000000000000",
Data = "{\"Completed\":false}"
});
});
modelBuilder.Entity("ASC.Core.Common.EF.User", b =>
{
b.Property<string>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("varchar(38)")
.HasColumnName("id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("ActivationStatus")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("activation_status")
.HasDefaultValueSql("'0'");
b.Property<DateTime?>("BirthDate")
.HasColumnType("datetime")
.HasColumnName("bithdate");
b.Property<string>("Contacts")
.HasColumnType("varchar(1024)")
.HasColumnName("contacts")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<DateTime>("CreateDate")
.HasColumnType("timestamp")
.HasColumnName("create_on");
b.Property<string>("CultureName")
.HasColumnType("varchar(20)")
.HasColumnName("culture")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Email")
.HasColumnType("varchar(255)")
.HasColumnName("email")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("FirstName")
.IsRequired()
.HasColumnType("varchar(64)")
.HasColumnName("firstname")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<DateTime>("LastModified")
.HasColumnType("datetime")
.HasColumnName("last_modified");
b.Property<string>("LastName")
.IsRequired()
.HasColumnType("varchar(64)")
.HasColumnName("lastname")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Location")
.HasColumnType("varchar(255)")
.HasColumnName("location")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("MobilePhone")
.HasColumnType("varchar(255)")
.HasColumnName("phone")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("MobilePhoneActivation")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("phone_activation")
.HasDefaultValueSql("'0'");
b.Property<string>("Notes")
.HasColumnType("varchar(512)")
.HasColumnName("notes")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<bool>("Removed")
.ValueGeneratedOnAdd()
.HasColumnType("tinyint(1)")
.HasColumnName("removed")
.HasDefaultValueSql("'0'");
b.Property<bool?>("Sex")
.HasColumnType("tinyint(1)")
.HasColumnName("sex");
b.Property<string>("Sid")
.HasColumnType("varchar(512)")
.HasColumnName("sid")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("SsoNameId")
.HasColumnType("varchar(512)")
.HasColumnName("sso_name_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("SsoSessionId")
.HasColumnType("varchar(512)")
.HasColumnName("sso_session_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("Status")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("status")
.HasDefaultValueSql("'1'");
b.Property<int>("Tenant")
.HasColumnType("int")
.HasColumnName("tenant");
b.Property<DateTime?>("TerminatedDate")
.HasColumnType("datetime")
.HasColumnName("terminateddate");
b.Property<string>("Title")
.HasColumnType("varchar(64)")
.HasColumnName("title")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("UserName")
.IsRequired()
.HasColumnType("varchar(255)")
.HasColumnName("username")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<DateTime?>("WorkFromDate")
.HasColumnType("datetime")
.HasColumnName("workfromdate");
b.HasKey("Id")
.HasName("PRIMARY");
b.HasIndex("Email")
.HasDatabaseName("email");
b.HasIndex("LastModified")
.HasDatabaseName("last_modified");
b.HasIndex("Tenant", "UserName")
.HasDatabaseName("username");
b.ToTable("core_user", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
b.HasData(
new
{
Id = "66faa6e4-f133-11ea-b126-00ffeec8b4ef",
ActivationStatus = 0,
CreateDate = new DateTime(2022, 7, 8, 0, 0, 0, 0, DateTimeKind.Unspecified),
Email = "",
FirstName = "Administrator",
LastModified = new DateTime(2021, 3, 9, 9, 52, 55, 765, DateTimeKind.Utc).AddTicks(1420),
LastName = "",
MobilePhoneActivation = 0,
Removed = false,
Status = 1,
Tenant = 1,
UserName = "administrator",
WorkFromDate = new DateTime(2021, 3, 9, 9, 52, 55, 764, DateTimeKind.Utc).AddTicks(9157)
});
});
modelBuilder.Entity("ASC.MessagingSystem.EF.Model.AuditEvent", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("id");
b.Property<int?>("Action")
.HasColumnType("int")
.HasColumnName("action");
b.Property<string>("Browser")
.HasColumnType("varchar(200)")
.HasColumnName("browser")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<DateTime>("Date")
.HasColumnType("datetime")
.HasColumnName("date");
b.Property<string>("DescriptionRaw")
.HasColumnType("varchar(20000)")
.HasColumnName("description")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Initiator")
.HasColumnType("varchar(200)")
.HasColumnName("initiator")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Ip")
.HasColumnType("varchar(50)")
.HasColumnName("ip")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Page")
.HasColumnType("varchar(300)")
.HasColumnName("page")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Platform")
.HasColumnType("varchar(200)")
.HasColumnName("platform")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Target")
.HasColumnType("text")
.HasColumnName("target")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("TenantId")
.HasColumnType("int")
.HasColumnName("tenant_id");
b.Property<string>("UserId")
.HasColumnType("char(38)")
.HasColumnName("user_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.HasKey("Id");
b.HasIndex("TenantId", "Date")
.HasDatabaseName("date");
b.ToTable("audit_events", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.MessagingSystem.EF.Model.LoginEvent", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("id");
b.Property<int?>("Action")
.HasColumnType("int")
.HasColumnName("action");
b.Property<bool>("Active")
.HasColumnType("tinyint(1)")
.HasColumnName("active");
b.Property<string>("Browser")
.HasColumnType("varchar(200)")
.HasColumnName("browser")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<DateTime>("Date")
.HasColumnType("datetime")
.HasColumnName("date");
b.Property<string>("DescriptionRaw")
.HasColumnType("varchar(500)")
.HasColumnName("description")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Ip")
.HasColumnType("varchar(50)")
.HasColumnName("ip")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Login")
.HasColumnType("varchar(200)")
.HasColumnName("login")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Page")
.HasColumnType("varchar(300)")
.HasColumnName("page")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Platform")
.HasColumnType("varchar(200)")
.HasColumnName("platform")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("TenantId")
.HasColumnType("int")
.HasColumnName("tenant_id");
b.Property<string>("UserId")
.IsRequired()
.HasColumnType("char(38)")
.HasColumnName("user_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.HasKey("Id");
b.HasIndex("Date")
.HasDatabaseName("date");
b.HasIndex("TenantId", "UserId")
.HasDatabaseName("tenant_id");
b.ToTable("login_events", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.HasOne("ASC.Core.Common.EF.Model.DbTenant", "Tenant")
.WithOne("Partner")
.HasForeignKey("ASC.Core.Common.EF.Model.DbTenantPartner", "TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tenant");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Navigation("Partner");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,45 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ASC.Migrations.MySql.SaaS.Migrations.Messages
{
/// <inheritdoc />
public partial class MessagesContextUpgrade1 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "tenants_partners",
columns: table => new
{
tenantid = table.Column<int>(name: "tenant_id", type: "int", nullable: false),
partnerid = table.Column<string>(name: "partner_id", type: "varchar(36)", nullable: true, collation: "utf8_general_ci")
.Annotation("MySql:CharSet", "utf8"),
affiliateid = table.Column<string>(name: "affiliate_id", type: "varchar(50)", nullable: true, collation: "utf8_general_ci")
.Annotation("MySql:CharSet", "utf8"),
campaign = table.Column<string>(type: "varchar(50)", nullable: true, collation: "utf8_general_ci")
.Annotation("MySql:CharSet", "utf8")
},
constraints: table =>
{
table.PrimaryKey("PRIMARY", x => x.tenantid);
table.ForeignKey(
name: "FK_tenants_partners_tenants_tenants_tenant_id",
column: x => x.tenantid,
principalTable: "tenants_tenants",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
})
.Annotation("MySql:CharSet", "utf8");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "tenants_partners");
}
}
}

View File

@ -16,7 +16,7 @@ namespace ASC.Migrations.MySql.Migrations
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "6.0.7")
.HasAnnotation("ProductVersion", "7.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 64);
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
@ -168,6 +168,38 @@ namespace ASC.Migrations.MySql.Migrations
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.HasColumnType("int")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.HasColumnType("varchar(50)")
.HasColumnName("affiliate_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Campaign")
.HasColumnType("varchar(50)")
.HasColumnName("campaign")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("PartnerId")
.HasColumnType("varchar(36)")
.HasColumnName("partner_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.HasKey("TenantId")
.HasName("PRIMARY");
b.ToTable("tenants_partners", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbWebstudioSettings", b =>
{
b.Property<int>("TenantId")
@ -544,6 +576,22 @@ namespace ASC.Migrations.MySql.Migrations
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.HasOne("ASC.Core.Common.EF.Model.DbTenant", "Tenant")
.WithOne("Partner")
.HasForeignKey("ASC.Core.Common.EF.Model.DbTenantPartner", "TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tenant");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Navigation("Partner");
});
#pragma warning restore 612, 618
}
}

View File

@ -0,0 +1,373 @@
// <auto-generated />
using System;
using ASC.Core.Common.EF.Context;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace ASC.Migrations.MySql.SaaS.Migrations.TenantDb
{
[DbContext(typeof(TenantDbContext))]
[Migration("20230816180639_TenantDbContext_Upgrade1")]
partial class TenantDbContextUpgrade1
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 64);
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbCoreSettings", b =>
{
b.Property<int>("Tenant")
.HasColumnType("int")
.HasColumnName("tenant");
b.Property<string>("Id")
.HasColumnType("varchar(128)")
.HasColumnName("id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<DateTime>("LastModified")
.HasColumnType("timestamp")
.HasColumnName("last_modified");
b.Property<byte[]>("Value")
.IsRequired()
.HasColumnType("mediumblob")
.HasColumnName("value");
b.HasKey("Tenant", "Id")
.HasName("PRIMARY");
b.ToTable("core_settings", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
b.HasData(
new
{
Tenant = -1,
Id = "CompanyWhiteLabelSettings",
LastModified = new DateTime(2022, 7, 8, 0, 0, 0, 0, DateTimeKind.Unspecified),
Value = new byte[] { 245, 71, 4, 138, 72, 101, 23, 21, 135, 217, 206, 188, 138, 73, 108, 96, 29, 150, 3, 31, 44, 28, 62, 145, 96, 53, 57, 66, 238, 118, 93, 172, 211, 22, 244, 181, 244, 40, 146, 67, 111, 196, 162, 27, 154, 109, 248, 255, 181, 17, 253, 127, 42, 65, 19, 90, 26, 206, 203, 145, 159, 159, 243, 105, 24, 71, 188, 165, 53, 85, 57, 37, 186, 251, 57, 96, 18, 162, 218, 80, 0, 101, 250, 100, 66, 97, 24, 51, 240, 215, 216, 169, 105, 100, 15, 253, 29, 83, 182, 236, 203, 53, 68, 251, 2, 150, 149, 148, 58, 136, 84, 37, 151, 82, 92, 227, 30, 52, 111, 40, 154, 155, 7, 126, 149, 100, 169, 87, 10, 129, 228, 138, 177, 101, 77, 67, 177, 216, 189, 201, 1, 213, 136, 216, 107, 198, 253, 221, 106, 255, 198, 17, 68, 14, 110, 90, 174, 182, 68, 222, 188, 77, 157, 19, 26, 68, 86, 97, 15, 81, 24, 171, 214, 114, 191, 175, 56, 56, 48, 52, 125, 82, 253, 113, 71, 41, 201, 5, 8, 118, 162, 191, 99, 196, 48, 198, 223, 79, 204, 174, 31, 97, 236, 20, 213, 218, 85, 34, 16, 74, 196, 209, 235, 14, 71, 209, 32, 131, 195, 84, 11, 66, 74, 19, 115, 255, 99, 69, 235, 210, 204, 15, 13, 4, 143, 127, 152, 125, 212, 91 }
},
new
{
Tenant = -1,
Id = "FullTextSearchSettings",
LastModified = new DateTime(2022, 7, 8, 0, 0, 0, 0, DateTimeKind.Unspecified),
Value = new byte[] { 8, 120, 207, 5, 153, 181, 23, 202, 162, 211, 218, 237, 157, 6, 76, 62, 220, 238, 175, 67, 31, 53, 166, 246, 66, 220, 173, 160, 72, 23, 227, 81, 50, 39, 187, 177, 222, 110, 43, 171, 235, 158, 16, 119, 178, 207, 49, 140, 72, 152, 20, 84, 94, 135, 117, 1, 246, 51, 251, 190, 148, 2, 44, 252, 221, 2, 91, 83, 149, 151, 58, 245, 16, 148, 52, 8, 187, 86, 150, 46, 227, 93, 163, 95, 47, 131, 116, 207, 95, 209, 38, 149, 53, 148, 73, 215, 206, 251, 194, 199, 189, 17, 42, 229, 135, 82, 23, 154, 162, 165, 158, 94, 23, 128, 30, 88, 12, 204, 96, 250, 236, 142, 189, 211, 214, 18, 196, 136, 102, 102, 217, 109, 108, 240, 96, 96, 94, 100, 201, 10, 31, 170, 128, 192 }
},
new
{
Tenant = -1,
Id = "SmtpSettings",
LastModified = new DateTime(2022, 7, 8, 0, 0, 0, 0, DateTimeKind.Unspecified),
Value = new byte[] { 240, 82, 224, 144, 161, 163, 117, 13, 173, 205, 78, 153, 97, 218, 4, 170, 81, 239, 1, 151, 226, 192, 98, 60, 241, 44, 88, 56, 191, 164, 10, 155, 72, 186, 239, 203, 227, 113, 88, 119, 49, 215, 227, 220, 158, 124, 96, 9, 116, 47, 158, 65, 93, 86, 219, 15, 10, 224, 142, 50, 248, 144, 75, 44, 68, 28, 198, 87, 198, 69, 67, 234, 238, 38, 32, 68, 162, 139, 67, 53, 220, 176, 240, 196, 233, 64, 29, 137, 31, 160, 99, 105, 249, 132, 202, 45, 71, 92, 134, 194, 55, 145, 121, 97, 197, 130, 119, 105, 131, 21, 133, 35, 10, 102, 172, 119, 135, 230, 251, 86, 253, 62, 55, 56, 146, 103, 164, 106 }
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("id");
b.Property<string>("Alias")
.IsRequired()
.HasColumnType("varchar(100)")
.HasColumnName("alias")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<bool>("Calls")
.ValueGeneratedOnAdd()
.HasColumnType("tinyint(1)")
.HasColumnName("calls")
.HasDefaultValueSql("'1'");
b.Property<DateTime>("CreationDateTime")
.HasColumnType("datetime")
.HasColumnName("creationdatetime");
b.Property<int>("Industry")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("industry")
.HasDefaultValueSql("'0'");
b.Property<string>("Language")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("char(10)")
.HasColumnName("language")
.HasDefaultValueSql("'en-US'")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<DateTime>("LastModified")
.HasColumnType("timestamp")
.HasColumnName("last_modified");
b.Property<string>("MappedDomain")
.HasColumnType("varchar(100)")
.HasColumnName("mappeddomain")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("varchar(255)")
.HasColumnName("name")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("OwnerId")
.HasColumnType("varchar(38)")
.HasColumnName("owner_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("PaymentId")
.HasColumnType("varchar(38)")
.HasColumnName("payment_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<bool>("Spam")
.ValueGeneratedOnAdd()
.HasColumnType("tinyint(1)")
.HasColumnName("spam")
.HasDefaultValueSql("'1'");
b.Property<int>("Status")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("status")
.HasDefaultValueSql("'0'");
b.Property<DateTime?>("StatusChanged")
.HasColumnType("datetime")
.HasColumnName("statuschanged");
b.Property<string>("TimeZone")
.HasColumnType("varchar(50)")
.HasColumnName("timezone")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("TrustedDomainsEnabled")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("trusteddomainsenabled")
.HasDefaultValueSql("'1'");
b.Property<string>("TrustedDomainsRaw")
.HasColumnType("varchar(1024)")
.HasColumnName("trusteddomains")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("Version")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("version")
.HasDefaultValueSql("'2'");
b.Property<DateTime?>("Version_Changed")
.HasColumnType("datetime")
.HasColumnName("version_changed");
b.HasKey("Id");
b.HasIndex("Alias")
.IsUnique()
.HasDatabaseName("alias");
b.HasIndex("LastModified")
.HasDatabaseName("last_modified");
b.HasIndex("MappedDomain")
.HasDatabaseName("mappeddomain");
b.HasIndex("Version")
.HasDatabaseName("version");
b.ToTable("tenants_tenants", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
b.HasData(
new
{
Id = 1,
Alias = "localhost",
Calls = false,
CreationDateTime = new DateTime(2021, 3, 9, 17, 46, 59, 97, DateTimeKind.Utc).AddTicks(4317),
Industry = 0,
LastModified = new DateTime(2022, 7, 8, 0, 0, 0, 0, DateTimeKind.Unspecified),
Name = "Web Office",
OwnerId = "66faa6e4-f133-11ea-b126-00ffeec8b4ef",
Spam = false,
Status = 0,
TrustedDomainsEnabled = 0,
Version = 0
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantForbiden", b =>
{
b.Property<string>("Address")
.HasColumnType("varchar(50)")
.HasColumnName("address")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.HasKey("Address")
.HasName("PRIMARY");
b.ToTable("tenants_forbiden", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
b.HasData(
new
{
Address = "controlpanel"
},
new
{
Address = "localhost"
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.HasColumnType("int")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.HasColumnType("varchar(50)")
.HasColumnName("affiliate_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Campaign")
.HasColumnType("varchar(50)")
.HasColumnName("campaign")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("PartnerId")
.HasColumnType("varchar(36)")
.HasColumnName("partner_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.HasKey("TenantId")
.HasName("PRIMARY");
b.ToTable("tenants_partners", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantVersion", b =>
{
b.Property<int>("Id")
.HasColumnType("int")
.HasColumnName("id");
b.Property<int>("DefaultVersion")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("default_version")
.HasDefaultValueSql("'0'");
b.Property<string>("Url")
.IsRequired()
.HasColumnType("varchar(64)")
.HasColumnName("url")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Version")
.IsRequired()
.HasColumnType("varchar(64)")
.HasColumnName("version")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<bool>("Visible")
.ValueGeneratedOnAdd()
.HasColumnType("tinyint(1)")
.HasColumnName("visible")
.HasDefaultValueSql("'0'");
b.HasKey("Id");
b.ToTable("tenants_version", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.TenantIpRestrictions", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("id");
b.Property<bool>("ForAdmin")
.HasColumnType("TINYINT(1)")
.HasColumnName("for_admin");
b.Property<string>("Ip")
.IsRequired()
.HasColumnType("varchar(50)")
.HasColumnName("ip")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("Tenant")
.HasColumnType("int")
.HasColumnName("tenant");
b.HasKey("Id");
b.HasIndex("Tenant")
.HasDatabaseName("tenant");
b.ToTable("tenants_iprestrictions", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.HasOne("ASC.Core.Common.EF.Model.DbTenant", "Tenant")
.WithOne("Partner")
.HasForeignKey("ASC.Core.Common.EF.Model.DbTenantPartner", "TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tenant");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Navigation("Partner");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,45 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ASC.Migrations.MySql.SaaS.Migrations.TenantDb
{
/// <inheritdoc />
public partial class TenantDbContextUpgrade1 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "tenants_partners",
columns: table => new
{
tenantid = table.Column<int>(name: "tenant_id", type: "int", nullable: false),
partnerid = table.Column<string>(name: "partner_id", type: "varchar(36)", nullable: true, collation: "utf8_general_ci")
.Annotation("MySql:CharSet", "utf8"),
affiliateid = table.Column<string>(name: "affiliate_id", type: "varchar(50)", nullable: true, collation: "utf8_general_ci")
.Annotation("MySql:CharSet", "utf8"),
campaign = table.Column<string>(type: "varchar(50)", nullable: true, collation: "utf8_general_ci")
.Annotation("MySql:CharSet", "utf8")
},
constraints: table =>
{
table.PrimaryKey("PRIMARY", x => x.tenantid);
table.ForeignKey(
name: "FK_tenants_partners_tenants_tenants_tenant_id",
column: x => x.tenantid,
principalTable: "tenants_tenants",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
})
.Annotation("MySql:CharSet", "utf8");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "tenants_partners");
}
}
}

View File

@ -16,7 +16,7 @@ namespace ASC.Migrations.MySql.Migrations
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "6.0.7")
.HasAnnotation("ProductVersion", "7.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 64);
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbCoreSettings", b =>
@ -246,6 +246,38 @@ namespace ASC.Migrations.MySql.Migrations
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.HasColumnType("int")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.HasColumnType("varchar(50)")
.HasColumnName("affiliate_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Campaign")
.HasColumnType("varchar(50)")
.HasColumnName("campaign")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("PartnerId")
.HasColumnType("varchar(36)")
.HasColumnName("partner_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.HasKey("TenantId")
.HasName("PRIMARY");
b.ToTable("tenants_partners", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantVersion", b =>
{
b.Property<int>("Id")
@ -316,6 +348,22 @@ namespace ASC.Migrations.MySql.Migrations
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.HasOne("ASC.Core.Common.EF.Model.DbTenant", "Tenant")
.WithOne("Partner")
.HasForeignKey("ASC.Core.Common.EF.Model.DbTenantPartner", "TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tenant");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Navigation("Partner");
});
#pragma warning restore 612, 618
}
}

View File

@ -31,16 +31,14 @@ namespace ASC.Migrations.MySql.Migrations
.HasMaxLength(10)
.HasColumnType("varchar(10)")
.HasColumnName("method")
.HasDefaultValueSql("''")
.IsRequired();
.HasDefaultValueSql("''");
b.Property<string>("Route")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasMaxLength(200)
.HasColumnType("varchar(200)")
.HasColumnName("route")
.HasDefaultValueSql("''")
.IsRequired();
.HasDefaultValueSql("''");
b.HasKey("Id")
.HasName("PRIMARY");
@ -111,11 +109,6 @@ namespace ASC.Migrations.MySql.Migrations
.HasColumnType("datetime")
.HasColumnName("delivery");
b.Property<string>("Method")
.HasMaxLength(100)
.HasColumnType("varchar")
.HasColumnName("method");
b.Property<string>("RequestHeaders")
.HasColumnType("json")
.HasColumnName("request_headers");
@ -137,10 +130,6 @@ namespace ASC.Migrations.MySql.Migrations
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("ConfigId")
.HasColumnType("int")
.HasColumnName("config_id");
b.Property<int>("Status")
.HasColumnType("int")
.HasColumnName("status");
@ -156,6 +145,10 @@ namespace ASC.Migrations.MySql.Migrations
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("WebhookId")
.HasColumnType("int")
.HasColumnName("webhook_id");
b.HasKey("Id")
.HasName("PRIMARY");

View File

@ -0,0 +1,339 @@
// <auto-generated />
using System;
using ASC.Core.Common.EF.Context;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace ASC.Migrations.MySql.SaaS.Migrations.WebstudioDb
{
[DbContext(typeof(WebstudioDbContext))]
[Migration("20230816180640_WebstudioDbContext_Upgrade1")]
partial class WebstudioDbContextUpgrade1
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 64);
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("id");
b.Property<string>("Alias")
.IsRequired()
.HasColumnType("varchar(100)")
.HasColumnName("alias")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<bool>("Calls")
.ValueGeneratedOnAdd()
.HasColumnType("tinyint(1)")
.HasColumnName("calls")
.HasDefaultValueSql("'1'");
b.Property<DateTime>("CreationDateTime")
.HasColumnType("datetime")
.HasColumnName("creationdatetime");
b.Property<int>("Industry")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("industry")
.HasDefaultValueSql("'0'");
b.Property<string>("Language")
.IsRequired()
.ValueGeneratedOnAdd()
.HasColumnType("char(10)")
.HasColumnName("language")
.HasDefaultValueSql("'en-US'")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<DateTime>("LastModified")
.HasColumnType("timestamp")
.HasColumnName("last_modified");
b.Property<string>("MappedDomain")
.HasColumnType("varchar(100)")
.HasColumnName("mappeddomain")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("varchar(255)")
.HasColumnName("name")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("OwnerId")
.HasColumnType("varchar(38)")
.HasColumnName("owner_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("PaymentId")
.HasColumnType("varchar(38)")
.HasColumnName("payment_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<bool>("Spam")
.ValueGeneratedOnAdd()
.HasColumnType("tinyint(1)")
.HasColumnName("spam")
.HasDefaultValueSql("'1'");
b.Property<int>("Status")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("status")
.HasDefaultValueSql("'0'");
b.Property<DateTime?>("StatusChanged")
.HasColumnType("datetime")
.HasColumnName("statuschanged");
b.Property<string>("TimeZone")
.HasColumnType("varchar(50)")
.HasColumnName("timezone")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("TrustedDomainsEnabled")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("trusteddomainsenabled")
.HasDefaultValueSql("'1'");
b.Property<string>("TrustedDomainsRaw")
.HasColumnType("varchar(1024)")
.HasColumnName("trusteddomains")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("Version")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("version")
.HasDefaultValueSql("'2'");
b.Property<DateTime?>("Version_Changed")
.HasColumnType("datetime")
.HasColumnName("version_changed");
b.HasKey("Id");
b.HasIndex("Alias")
.IsUnique()
.HasDatabaseName("alias");
b.HasIndex("LastModified")
.HasDatabaseName("last_modified");
b.HasIndex("MappedDomain")
.HasDatabaseName("mappeddomain");
b.HasIndex("Version")
.HasDatabaseName("version");
b.ToTable("tenants_tenants", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
b.HasData(
new
{
Id = 1,
Alias = "localhost",
Calls = false,
CreationDateTime = new DateTime(2021, 3, 9, 17, 46, 59, 97, DateTimeKind.Utc).AddTicks(4317),
Industry = 0,
LastModified = new DateTime(2022, 7, 8, 0, 0, 0, 0, DateTimeKind.Unspecified),
Name = "Web Office",
OwnerId = "66faa6e4-f133-11ea-b126-00ffeec8b4ef",
Spam = false,
Status = 0,
TrustedDomainsEnabled = 0,
Version = 0
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.HasColumnType("int")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.HasColumnType("varchar(50)")
.HasColumnName("affiliate_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Campaign")
.HasColumnType("varchar(50)")
.HasColumnName("campaign")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("PartnerId")
.HasColumnType("varchar(36)")
.HasColumnName("partner_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.HasKey("TenantId")
.HasName("PRIMARY");
b.ToTable("tenants_partners", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbWebstudioIndex", b =>
{
b.Property<string>("IndexName")
.HasColumnType("varchar(50)")
.HasColumnName("index_name")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<DateTime>("LastModified")
.HasColumnType("timestamp")
.HasColumnName("last_modified");
b.HasKey("IndexName")
.HasName("PRIMARY");
b.ToTable("webstudio_index", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbWebstudioSettings", b =>
{
b.Property<int>("TenantId")
.HasColumnType("int")
.HasColumnName("TenantID");
b.Property<string>("Id")
.HasColumnType("varchar(64)")
.HasColumnName("ID")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("UserId")
.HasColumnType("varchar(64)")
.HasColumnName("UserID")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Data")
.IsRequired()
.HasColumnType("mediumtext")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.HasKey("TenantId", "Id", "UserId")
.HasName("PRIMARY");
b.HasIndex("Id")
.HasDatabaseName("ID");
b.ToTable("webstudio_settings", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
b.HasData(
new
{
TenantId = 1,
Id = "9a925891-1f92-4ed7-b277-d6f649739f06",
UserId = "00000000-0000-0000-0000-000000000000",
Data = "{\"Completed\":false}"
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbWebstudioUserVisit", b =>
{
b.Property<int>("TenantId")
.HasColumnType("int")
.HasColumnName("tenantid");
b.Property<DateTime>("VisitDate")
.HasColumnType("datetime")
.HasColumnName("visitdate");
b.Property<string>("ProductId")
.HasColumnType("varchar(38)")
.HasColumnName("productid")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("UserId")
.HasColumnType("varchar(38)")
.HasColumnName("userid")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<DateTime?>("FirstVisitTime")
.ValueGeneratedOnAdd()
.HasColumnType("datetime")
.HasColumnName("firstvisittime")
.HasDefaultValueSql("NULL");
b.Property<DateTime?>("LastVisitTime")
.ValueGeneratedOnAdd()
.HasColumnType("datetime")
.HasColumnName("lastvisittime")
.HasDefaultValueSql("NULL");
b.Property<int>("VisitCount")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasColumnName("visitcount")
.HasDefaultValueSql("'0'");
b.HasKey("TenantId", "VisitDate", "ProductId", "UserId")
.HasName("PRIMARY");
b.HasIndex("VisitDate")
.HasDatabaseName("visitdate");
b.ToTable("webstudio_uservisit", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.HasOne("ASC.Core.Common.EF.Model.DbTenant", "Tenant")
.WithOne("Partner")
.HasForeignKey("ASC.Core.Common.EF.Model.DbTenantPartner", "TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tenant");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Navigation("Partner");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,45 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ASC.Migrations.MySql.SaaS.Migrations.WebstudioDb
{
/// <inheritdoc />
public partial class WebstudioDbContextUpgrade1 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "tenants_partners",
columns: table => new
{
tenantid = table.Column<int>(name: "tenant_id", type: "int", nullable: false),
partnerid = table.Column<string>(name: "partner_id", type: "varchar(36)", nullable: true, collation: "utf8_general_ci")
.Annotation("MySql:CharSet", "utf8"),
affiliateid = table.Column<string>(name: "affiliate_id", type: "varchar(50)", nullable: true, collation: "utf8_general_ci")
.Annotation("MySql:CharSet", "utf8"),
campaign = table.Column<string>(type: "varchar(50)", nullable: true, collation: "utf8_general_ci")
.Annotation("MySql:CharSet", "utf8")
},
constraints: table =>
{
table.PrimaryKey("PRIMARY", x => x.tenantid);
table.ForeignKey(
name: "FK_tenants_partners_tenants_tenants_tenant_id",
column: x => x.tenantid,
principalTable: "tenants_tenants",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
})
.Annotation("MySql:CharSet", "utf8");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "tenants_partners");
}
}
}

View File

@ -16,7 +16,7 @@ namespace ASC.Migrations.MySql.Migrations
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "6.0.7")
.HasAnnotation("ProductVersion", "7.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 64);
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
@ -168,6 +168,38 @@ namespace ASC.Migrations.MySql.Migrations
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.HasColumnType("int")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.HasColumnType("varchar(50)")
.HasColumnName("affiliate_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("Campaign")
.HasColumnType("varchar(50)")
.HasColumnName("campaign")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("PartnerId")
.HasColumnType("varchar(36)")
.HasColumnName("partner_id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.HasKey("TenantId")
.HasName("PRIMARY");
b.ToTable("tenants_partners", (string)null);
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbWebstudioIndex", b =>
{
b.Property<string>("IndexName")
@ -282,6 +314,22 @@ namespace ASC.Migrations.MySql.Migrations
b.HasAnnotation("MySql:CharSet", "utf8");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.HasOne("ASC.Core.Common.EF.Model.DbTenant", "Tenant")
.WithOne("Partner")
.HasForeignKey("ASC.Core.Common.EF.Model.DbTenantPartner", "TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tenant");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Navigation("Partner");
});
#pragma warning restore 612, 618
}
}

View File

@ -0,0 +1,377 @@
// <auto-generated />
using System;
using ASC.Data.Backup.EF.Context;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace ASC.Migrations.PostgreSql.Migrations.Backups
{
[DbContext(typeof(BackupsContext))]
[Migration("20230816180458_BackupsContext_Upgrade1")]
partial class BackupsContextUpgrade1
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn)
.HasAnnotation("ProductVersion", "7.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<string>("Alias")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("character varying(100)")
.HasColumnName("alias");
b.Property<bool>("Calls")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasColumnName("calls")
.HasDefaultValueSql("true");
b.Property<DateTime>("CreationDateTime")
.HasColumnType("timestamp with time zone")
.HasColumnName("creationdatetime");
b.Property<int>("Industry")
.HasColumnType("integer")
.HasColumnName("industry");
b.Property<string>("Language")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(10)
.HasColumnType("character(10)")
.HasColumnName("language")
.HasDefaultValueSql("'en-US'")
.IsFixedLength();
b.Property<DateTime>("LastModified")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp with time zone")
.HasColumnName("last_modified")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
b.Property<string>("MappedDomain")
.ValueGeneratedOnAdd()
.HasMaxLength(100)
.HasColumnType("character varying(100)")
.HasColumnName("mappeddomain")
.HasDefaultValueSql("NULL");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("name");
b.Property<Guid?>("OwnerId")
.ValueGeneratedOnAdd()
.HasMaxLength(38)
.HasColumnType("uuid")
.HasColumnName("owner_id")
.HasDefaultValueSql("NULL");
b.Property<string>("PaymentId")
.ValueGeneratedOnAdd()
.HasMaxLength(38)
.HasColumnType("character varying(38)")
.HasColumnName("payment_id")
.HasDefaultValueSql("NULL");
b.Property<bool>("Spam")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasColumnName("spam")
.HasDefaultValueSql("true");
b.Property<int>("Status")
.HasColumnType("integer")
.HasColumnName("status");
b.Property<DateTime?>("StatusChanged")
.HasColumnType("timestamp with time zone")
.HasColumnName("statuschanged");
b.Property<string>("TimeZone")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("timezone")
.HasDefaultValueSql("NULL");
b.Property<int>("TrustedDomainsEnabled")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("trusteddomainsenabled")
.HasDefaultValueSql("1");
b.Property<string>("TrustedDomainsRaw")
.ValueGeneratedOnAdd()
.HasMaxLength(1024)
.HasColumnType("character varying(1024)")
.HasColumnName("trusteddomains")
.HasDefaultValueSql("NULL");
b.Property<int>("Version")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("version")
.HasDefaultValueSql("2");
b.Property<DateTime?>("Version_Changed")
.HasColumnType("timestamp with time zone")
.HasColumnName("version_changed");
b.HasKey("Id");
b.HasIndex("Alias")
.IsUnique()
.HasDatabaseName("alias");
b.HasIndex("LastModified")
.HasDatabaseName("last_modified_tenants_tenants");
b.HasIndex("MappedDomain")
.HasDatabaseName("mappeddomain");
b.HasIndex("Version")
.HasDatabaseName("version");
b.ToTable("tenants_tenants", "onlyoffice");
b.HasData(
new
{
Id = 1,
Alias = "localhost",
Calls = false,
CreationDateTime = new DateTime(2021, 3, 9, 17, 46, 59, 97, DateTimeKind.Utc).AddTicks(4317),
Industry = 0,
LastModified = new DateTime(2022, 7, 8, 0, 0, 0, 0, DateTimeKind.Unspecified),
Name = "Web Office",
OwnerId = new Guid("66faa6e4-f133-11ea-b126-00ffeec8b4ef"),
Spam = false,
Status = 0,
TrustedDomainsEnabled = 0,
Version = 0
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.HasColumnType("integer")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("affiliate_id")
.HasDefaultValueSql("NULL");
b.Property<string>("Campaign")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("campaign")
.HasDefaultValueSql("NULL");
b.Property<string>("PartnerId")
.ValueGeneratedOnAdd()
.HasMaxLength(36)
.HasColumnType("character varying(36)")
.HasColumnName("partner_id")
.HasDefaultValueSql("NULL");
b.HasKey("TenantId")
.HasName("tenants_partners_pkey");
b.ToTable("tenants_partners", "onlyoffice");
});
modelBuilder.Entity("ASC.Data.Backup.EF.Model.BackupRecord", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasMaxLength(38)
.HasColumnType("char")
.HasColumnName("id")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<DateTime>("CreatedOn")
.HasColumnType("datetime")
.HasColumnName("created_on");
b.Property<DateTime>("ExpiresOn")
.ValueGeneratedOnAdd()
.HasColumnType("datetime")
.HasColumnName("expires_on")
.HasDefaultValueSql("'0001-01-01 00:00:00'");
b.Property<string>("Hash")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("hash")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("IsScheduled")
.HasMaxLength(10)
.HasColumnType("int")
.HasColumnName("is_scheduled");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("name")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("Removed")
.HasMaxLength(10)
.HasColumnType("int")
.HasColumnName("removed");
b.Property<string>("StorageBasePath")
.ValueGeneratedOnAdd()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("storage_base_path")
.HasDefaultValueSql("NULL")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("StorageParams")
.ValueGeneratedOnAdd()
.HasColumnType("text")
.HasColumnName("storage_params")
.HasDefaultValueSql("NULL")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("StoragePath")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("storage_path")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("StorageType")
.HasMaxLength(10)
.HasColumnType("int")
.HasColumnName("storage_type");
b.Property<int>("TenantId")
.HasMaxLength(10)
.HasColumnType("int")
.HasColumnName("tenant_id");
b.HasKey("Id")
.HasName("PRIMARY");
b.HasIndex("ExpiresOn")
.HasDatabaseName("expires_on");
b.HasIndex("IsScheduled")
.HasDatabaseName("is_scheduled");
b.HasIndex("TenantId")
.HasDatabaseName("tenant_id");
b.ToTable("backup_backup", (string)null);
});
modelBuilder.Entity("ASC.Data.Backup.EF.Model.BackupSchedule", b =>
{
b.Property<int>("TenantId")
.ValueGeneratedOnAdd()
.HasMaxLength(10)
.HasColumnType("integer")
.HasColumnName("tenant_id")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<int>("BackupsStored")
.HasMaxLength(10)
.HasColumnType("integer")
.HasColumnName("backups_stored");
b.Property<string>("Cron")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("cron")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<DateTime>("LastBackupTime")
.HasColumnType("datetime")
.HasColumnName("last_backup_time");
b.Property<string>("StorageBasePath")
.ValueGeneratedOnAdd()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("storage_base_path")
.HasDefaultValueSql("NULL")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<string>("StorageParams")
.ValueGeneratedOnAdd()
.HasColumnType("text")
.HasColumnName("storage_params")
.HasDefaultValueSql("NULL")
.UseCollation("utf8_general_ci")
.HasAnnotation("MySql:CharSet", "utf8");
b.Property<int>("StorageType")
.HasMaxLength(10)
.HasColumnType("integer")
.HasColumnName("storage_type");
b.HasKey("TenantId")
.HasName("PRIMARY");
b.ToTable("backup_schedule", (string)null);
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.HasOne("ASC.Core.Common.EF.Model.DbTenant", "Tenant")
.WithOne("Partner")
.HasForeignKey("ASC.Core.Common.EF.Model.DbTenantPartner", "TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tenant");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Navigation("Partner");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,44 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ASC.Migrations.PostgreSql.Migrations.Backups
{
/// <inheritdoc />
public partial class BackupsContextUpgrade1 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "tenants_partners",
schema: "onlyoffice",
columns: table => new
{
tenantid = table.Column<int>(name: "tenant_id", type: "integer", nullable: false),
partnerid = table.Column<string>(name: "partner_id", type: "character varying(36)", maxLength: 36, nullable: true, defaultValueSql: "NULL"),
affiliateid = table.Column<string>(name: "affiliate_id", type: "character varying(50)", maxLength: 50, nullable: true, defaultValueSql: "NULL"),
campaign = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: true, defaultValueSql: "NULL")
},
constraints: table =>
{
table.PrimaryKey("tenants_partners_pkey", x => x.tenantid);
table.ForeignKey(
name: "FK_tenants_partners_tenants_tenants_tenant_id",
column: x => x.tenantid,
principalSchema: "onlyoffice",
principalTable: "tenants_tenants",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "tenants_partners",
schema: "onlyoffice");
}
}
}

View File

@ -170,6 +170,39 @@ namespace ASC.Migrations.PostgreSql.Migrations.Backups
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.HasColumnType("integer")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("affiliate_id")
.HasDefaultValueSql("NULL");
b.Property<string>("Campaign")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("campaign")
.HasDefaultValueSql("NULL");
b.Property<string>("PartnerId")
.ValueGeneratedOnAdd()
.HasMaxLength(36)
.HasColumnType("character varying(36)")
.HasColumnName("partner_id")
.HasDefaultValueSql("NULL");
b.HasKey("TenantId")
.HasName("tenants_partners_pkey");
b.ToTable("tenants_partners", "onlyoffice");
});
modelBuilder.Entity("ASC.Data.Backup.EF.Model.BackupRecord", b =>
{
b.Property<Guid>("Id")
@ -319,6 +352,22 @@ namespace ASC.Migrations.PostgreSql.Migrations.Backups
b.ToTable("backup_schedule", (string)null);
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.HasOne("ASC.Core.Common.EF.Model.DbTenant", "Tenant")
.WithOne("Partner")
.HasForeignKey("ASC.Core.Common.EF.Model.DbTenantPartner", "TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tenant");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Navigation("Partner");
});
#pragma warning restore 612, 618
}
}

View File

@ -65,7 +65,7 @@ namespace ASC.Migrations.PostgreSql.Migrations.CoreDb
new
{
Tenant = -1,
Features = "trial,audit,ldap,sso,whitelabel,thirdparty,restore,total_size:107374182400,file_size:100,manager:1",
Features = "trial,audit,ldap,sso,whitelabel,thirdparty,restore,oauth,total_size:107374182400,file_size:100,manager:1",
Name = "trial",
Price = 0m,
Visible = false
@ -73,7 +73,7 @@ namespace ASC.Migrations.PostgreSql.Migrations.CoreDb
new
{
Tenant = -2,
Features = "audit,ldap,sso,whitelabel,thirdparty,restore,contentsearch,total_size:107374182400,file_size:1024,manager:1",
Features = "audit,ldap,sso,whitelabel,thirdparty,restore,oauth,contentsearch,total_size:107374182400,file_size:1024,manager:1",
Name = "admin",
Price = 30m,
ProductId = "1002",

View File

@ -17,101 +17,89 @@ namespace ASC.Migrations.PostgreSql.Migrations
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Npgsql:Enum:onlyoffice.enum_dbip_location", "ipv4,ipv6")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn)
.HasAnnotation("ProductVersion", "6.0.7")
.HasAnnotation("ProductVersion", "7.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbipLocation", b =>
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbIPLookup", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<string>("AddrType")
.HasColumnType("text");
.HasColumnType("enum('ipv4','ipv6')")
.HasColumnName("addr_type");
b.Property<byte[]>("IPStart")
.HasColumnType("varbinary(16)")
.HasColumnName("ip_start");
b.Property<string>("City")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnType("varchar(80)")
.HasColumnName("city");
b.Property<string>("Continent")
.IsRequired()
.HasColumnType("char(2)")
.HasColumnName("continent");
b.Property<string>("Country")
.IsRequired()
.HasMaxLength(2)
.HasColumnType("character varying(2)")
.HasColumnType("char(2)")
.HasColumnName("country");
b.Property<string>("District")
.ValueGeneratedOnAdd()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("district")
.HasDefaultValueSql("NULL");
.IsRequired()
.HasColumnType("varchar(80)")
.HasColumnName("district");
b.Property<int?>("GeonameId")
.HasColumnType("integer")
.HasColumnType("int(10)")
.HasColumnName("geoname_id");
b.Property<string>("IPEnd")
b.Property<byte[]>("IPEnd")
.IsRequired()
.HasMaxLength(39)
.HasColumnType("character varying(39)")
.HasColumnType("varbinary(16)")
.HasColumnName("ip_end");
b.Property<string>("IPStart")
.IsRequired()
.HasMaxLength(39)
.HasColumnType("character varying(39)")
.HasColumnName("ip_start");
b.Property<long?>("Latitude")
.HasColumnType("bigint")
b.Property<float>("Latitude")
.HasColumnType("float")
.HasColumnName("latitude");
b.Property<long?>("Longitude")
.HasColumnType("bigint")
b.Property<float>("Longitude")
.HasColumnType("float")
.HasColumnName("longitude");
b.Property<int>("Processed")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("processed")
.HasDefaultValueSql("1");
b.Property<string>("StateProv")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnType("varchar(80)")
.HasColumnName("stateprov");
b.Property<string>("TimezoneName")
.ValueGeneratedOnAdd()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("timezone_name")
.HasDefaultValueSql("NULL");
b.Property<string>("StateProvCode")
.HasColumnType("varchar(15)")
.HasColumnName("stateprov_code");
b.Property<double?>("TimezoneOffset")
.HasColumnType("double precision")
b.Property<string>("TimezoneName")
.IsRequired()
.HasColumnType("varchar(64)")
.HasColumnName("timezone_name");
b.Property<float>("TimezoneOffset")
.HasColumnType("float")
.HasColumnName("timezone_offset");
b.Property<string>("WeatherCode")
.IsRequired()
.HasColumnType("varchar(10)")
.HasColumnName("weather_code");
b.Property<string>("ZipCode")
.ValueGeneratedOnAdd()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("zipcode")
.HasDefaultValueSql("NULL");
.HasColumnType("varchar(20)")
.HasColumnName("zipcode");
b.HasKey("Id");
b.HasKey("AddrType", "IPStart");
b.HasIndex("IPStart")
.HasDatabaseName("ip_start");
b.ToTable("dbip_lookup", (string)null);
b.ToTable("dbip_location", "onlyoffice");
b.HasAnnotation("MySql:CharSet", "utf8mb4");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.MobileAppInstall", b =>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,44 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ASC.Migrations.PostgreSql.Migrations.FilesDb
{
/// <inheritdoc />
public partial class FilesDbContextUpgrade3 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "tenants_partners",
schema: "onlyoffice",
columns: table => new
{
tenantid = table.Column<int>(name: "tenant_id", type: "integer", nullable: false),
partnerid = table.Column<string>(name: "partner_id", type: "character varying(36)", maxLength: 36, nullable: true, defaultValueSql: "NULL"),
affiliateid = table.Column<string>(name: "affiliate_id", type: "character varying(50)", maxLength: 50, nullable: true, defaultValueSql: "NULL"),
campaign = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: true, defaultValueSql: "NULL")
},
constraints: table =>
{
table.PrimaryKey("tenants_partners_pkey", x => x.tenantid);
table.ForeignKey(
name: "FK_tenants_partners_tenants_tenants_tenant_id",
column: x => x.tenantid,
principalSchema: "onlyoffice",
principalTable: "tenants_tenants",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "tenants_partners",
schema: "onlyoffice");
}
}
}

View File

@ -170,6 +170,39 @@ namespace ASC.Migrations.PostgreSql.Migrations.FilesDb
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.HasColumnType("integer")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("affiliate_id")
.HasDefaultValueSql("NULL");
b.Property<string>("Campaign")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("campaign")
.HasDefaultValueSql("NULL");
b.Property<string>("PartnerId")
.ValueGeneratedOnAdd()
.HasMaxLength(36)
.HasColumnType("character varying(36)")
.HasColumnName("partner_id")
.HasDefaultValueSql("NULL");
b.HasKey("TenantId")
.HasName("tenants_partners_pkey");
b.ToTable("tenants_partners", "onlyoffice");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.FilesConverts", b =>
{
b.Property<string>("Input")
@ -3459,6 +3492,22 @@ namespace ASC.Migrations.PostgreSql.Migrations.FilesDb
b.ToTable("files_folder_tree", "onlyoffice");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.HasOne("ASC.Core.Common.EF.Model.DbTenant", "Tenant")
.WithOne("Partner")
.HasForeignKey("ASC.Core.Common.EF.Model.DbTenantPartner", "TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tenant");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Navigation("Partner");
});
#pragma warning restore 612, 618
}
}

View File

@ -0,0 +1,646 @@
// <auto-generated />
using System;
using ASC.MessagingSystem.EF.Context;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace ASC.Migrations.PostgreSql.SaaS.Migrations.Messages
{
[DbContext(typeof(MessagesContext))]
[Migration("20230816180501_MessagesContext_Upgrade1")]
partial class MessagesContextUpgrade1
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn)
.HasAnnotation("ProductVersion", "7.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<string>("Alias")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("character varying(100)")
.HasColumnName("alias");
b.Property<bool>("Calls")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasColumnName("calls")
.HasDefaultValueSql("true");
b.Property<DateTime>("CreationDateTime")
.HasColumnType("timestamp with time zone")
.HasColumnName("creationdatetime");
b.Property<int>("Industry")
.HasColumnType("integer")
.HasColumnName("industry");
b.Property<string>("Language")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(10)
.HasColumnType("character(10)")
.HasColumnName("language")
.HasDefaultValueSql("'en-US'")
.IsFixedLength();
b.Property<DateTime>("LastModified")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp with time zone")
.HasColumnName("last_modified")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
b.Property<string>("MappedDomain")
.ValueGeneratedOnAdd()
.HasMaxLength(100)
.HasColumnType("character varying(100)")
.HasColumnName("mappeddomain")
.HasDefaultValueSql("NULL");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("name");
b.Property<Guid?>("OwnerId")
.ValueGeneratedOnAdd()
.HasMaxLength(38)
.HasColumnType("uuid")
.HasColumnName("owner_id")
.HasDefaultValueSql("NULL");
b.Property<string>("PaymentId")
.ValueGeneratedOnAdd()
.HasMaxLength(38)
.HasColumnType("character varying(38)")
.HasColumnName("payment_id")
.HasDefaultValueSql("NULL");
b.Property<bool>("Spam")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasColumnName("spam")
.HasDefaultValueSql("true");
b.Property<int>("Status")
.HasColumnType("integer")
.HasColumnName("status");
b.Property<DateTime?>("StatusChanged")
.HasColumnType("timestamp with time zone")
.HasColumnName("statuschanged");
b.Property<string>("TimeZone")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("timezone")
.HasDefaultValueSql("NULL");
b.Property<int>("TrustedDomainsEnabled")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("trusteddomainsenabled")
.HasDefaultValueSql("1");
b.Property<string>("TrustedDomainsRaw")
.ValueGeneratedOnAdd()
.HasMaxLength(1024)
.HasColumnType("character varying(1024)")
.HasColumnName("trusteddomains")
.HasDefaultValueSql("NULL");
b.Property<int>("Version")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("version")
.HasDefaultValueSql("2");
b.Property<DateTime?>("Version_Changed")
.HasColumnType("timestamp with time zone")
.HasColumnName("version_changed");
b.HasKey("Id");
b.HasIndex("Alias")
.IsUnique()
.HasDatabaseName("alias");
b.HasIndex("LastModified")
.HasDatabaseName("last_modified_tenants_tenants");
b.HasIndex("MappedDomain")
.HasDatabaseName("mappeddomain");
b.HasIndex("Version")
.HasDatabaseName("version");
b.ToTable("tenants_tenants", "onlyoffice");
b.HasData(
new
{
Id = 1,
Alias = "localhost",
Calls = false,
CreationDateTime = new DateTime(2021, 3, 9, 17, 46, 59, 97, DateTimeKind.Utc).AddTicks(4317),
Industry = 0,
LastModified = new DateTime(2022, 7, 8, 0, 0, 0, 0, DateTimeKind.Unspecified),
Name = "Web Office",
OwnerId = new Guid("66faa6e4-f133-11ea-b126-00ffeec8b4ef"),
Spam = false,
Status = 0,
TrustedDomainsEnabled = 0,
Version = 0
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.HasColumnType("integer")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("affiliate_id")
.HasDefaultValueSql("NULL");
b.Property<string>("Campaign")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("campaign")
.HasDefaultValueSql("NULL");
b.Property<string>("PartnerId")
.ValueGeneratedOnAdd()
.HasMaxLength(36)
.HasColumnType("character varying(36)")
.HasColumnName("partner_id")
.HasDefaultValueSql("NULL");
b.HasKey("TenantId")
.HasName("tenants_partners_pkey");
b.ToTable("tenants_partners", "onlyoffice");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbWebstudioSettings", b =>
{
b.Property<int>("TenantId")
.HasColumnType("integer")
.HasColumnName("TenantID");
b.Property<Guid>("Id")
.HasMaxLength(64)
.HasColumnType("uuid")
.HasColumnName("ID");
b.Property<Guid>("UserId")
.HasMaxLength(64)
.HasColumnType("uuid")
.HasColumnName("UserID");
b.Property<string>("Data")
.IsRequired()
.HasColumnType("text");
b.HasKey("TenantId", "Id", "UserId")
.HasName("webstudio_settings_pkey");
b.HasIndex("Id")
.HasDatabaseName("ID");
b.ToTable("webstudio_settings", "onlyoffice");
b.HasData(
new
{
TenantId = 1,
Id = new Guid("9a925891-1f92-4ed7-b277-d6f649739f06"),
UserId = new Guid("00000000-0000-0000-0000-000000000000"),
Data = "{\"Completed\":false}"
});
});
modelBuilder.Entity("ASC.Core.Common.EF.User", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasMaxLength(38)
.HasColumnType("uuid")
.HasColumnName("id");
b.Property<int>("ActivationStatus")
.HasColumnType("integer")
.HasColumnName("activation_status");
b.Property<DateTime?>("BirthDate")
.HasColumnType("timestamp with time zone")
.HasColumnName("bithdate");
b.Property<string>("Contacts")
.ValueGeneratedOnAdd()
.HasMaxLength(1024)
.HasColumnType("character varying(1024)")
.HasColumnName("contacts")
.HasDefaultValueSql("NULL");
b.Property<DateTime>("CreateDate")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp with time zone")
.HasColumnName("create_on")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
b.Property<string>("CultureName")
.ValueGeneratedOnAdd()
.HasMaxLength(20)
.HasColumnType("character varying(20)")
.HasColumnName("culture")
.HasDefaultValueSql("NULL");
b.Property<string>("Email")
.ValueGeneratedOnAdd()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("email")
.HasDefaultValueSql("NULL");
b.Property<string>("FirstName")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("firstname");
b.Property<DateTime>("LastModified")
.HasColumnType("timestamp with time zone")
.HasColumnName("last_modified");
b.Property<string>("LastName")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("lastname");
b.Property<string>("Location")
.ValueGeneratedOnAdd()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("location")
.HasDefaultValueSql("NULL");
b.Property<string>("MobilePhone")
.ValueGeneratedOnAdd()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("phone")
.HasDefaultValueSql("NULL");
b.Property<int>("MobilePhoneActivation")
.HasColumnType("integer")
.HasColumnName("phone_activation");
b.Property<string>("Notes")
.ValueGeneratedOnAdd()
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("notes")
.HasDefaultValueSql("NULL");
b.Property<bool>("Removed")
.HasColumnType("boolean")
.HasColumnName("removed");
b.Property<bool?>("Sex")
.HasColumnType("boolean")
.HasColumnName("sex");
b.Property<string>("Sid")
.ValueGeneratedOnAdd()
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("sid")
.HasDefaultValueSql("NULL");
b.Property<string>("SsoNameId")
.ValueGeneratedOnAdd()
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("sso_name_id")
.HasDefaultValueSql("NULL");
b.Property<string>("SsoSessionId")
.ValueGeneratedOnAdd()
.HasMaxLength(512)
.HasColumnType("character varying(512)")
.HasColumnName("sso_session_id")
.HasDefaultValueSql("NULL");
b.Property<int>("Status")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("status")
.HasDefaultValueSql("1");
b.Property<int>("Tenant")
.HasColumnType("integer")
.HasColumnName("tenant");
b.Property<DateTime?>("TerminatedDate")
.HasColumnType("timestamp with time zone")
.HasColumnName("terminateddate");
b.Property<string>("Title")
.ValueGeneratedOnAdd()
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("title")
.HasDefaultValueSql("NULL");
b.Property<string>("UserName")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("username");
b.Property<DateTime?>("WorkFromDate")
.HasColumnType("timestamp with time zone")
.HasColumnName("workfromdate");
b.HasKey("Id");
b.HasIndex("Email")
.HasDatabaseName("email");
b.HasIndex("LastModified")
.HasDatabaseName("last_modified_core_user");
b.HasIndex("UserName", "Tenant")
.HasDatabaseName("username");
b.ToTable("core_user", "onlyoffice");
b.HasData(
new
{
Id = new Guid("66faa6e4-f133-11ea-b126-00ffeec8b4ef"),
ActivationStatus = 0,
CreateDate = new DateTime(2022, 7, 8, 0, 0, 0, 0, DateTimeKind.Unspecified),
Email = "",
FirstName = "Administrator",
LastModified = new DateTime(2021, 3, 9, 9, 52, 55, 765, DateTimeKind.Utc).AddTicks(1420),
LastName = "",
MobilePhoneActivation = 0,
Removed = false,
Status = 1,
Tenant = 1,
UserName = "administrator",
WorkFromDate = new DateTime(2021, 3, 9, 9, 52, 55, 764, DateTimeKind.Utc).AddTicks(9157)
});
});
modelBuilder.Entity("ASC.Core.Common.EF.UserGroup", b =>
{
b.Property<int>("Tenant")
.HasColumnType("integer")
.HasColumnName("tenant");
b.Property<Guid>("Userid")
.HasMaxLength(38)
.HasColumnType("uuid")
.HasColumnName("userid");
b.Property<Guid>("UserGroupId")
.HasMaxLength(38)
.HasColumnType("uuid")
.HasColumnName("groupid");
b.Property<int>("RefType")
.HasColumnType("integer")
.HasColumnName("ref_type");
b.Property<DateTime>("LastModified")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp with time zone")
.HasColumnName("last_modified")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
b.Property<bool>("Removed")
.HasColumnType("boolean")
.HasColumnName("removed");
b.HasKey("Tenant", "Userid", "UserGroupId", "RefType")
.HasName("core_usergroup_pkey");
b.HasIndex("LastModified")
.HasDatabaseName("last_modified_core_usergroup");
b.ToTable("core_usergroup", "onlyoffice");
});
modelBuilder.Entity("ASC.MessagingSystem.EF.Model.AuditEvent", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<int?>("Action")
.HasColumnType("integer")
.HasColumnName("action");
b.Property<string>("Browser")
.ValueGeneratedOnAdd()
.HasMaxLength(200)
.HasColumnType("character varying(200)")
.HasColumnName("browser")
.HasDefaultValueSql("NULL");
b.Property<DateTime>("Date")
.HasColumnType("timestamp with time zone")
.HasColumnName("date");
b.Property<string>("DescriptionRaw")
.ValueGeneratedOnAdd()
.HasMaxLength(20000)
.HasColumnType("character varying(20000)")
.HasColumnName("description")
.HasDefaultValueSql("NULL");
b.Property<string>("Initiator")
.ValueGeneratedOnAdd()
.HasMaxLength(200)
.HasColumnType("character varying(200)")
.HasColumnName("initiator")
.HasDefaultValueSql("NULL");
b.Property<string>("Ip")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("ip")
.HasDefaultValueSql("NULL");
b.Property<string>("Page")
.ValueGeneratedOnAdd()
.HasMaxLength(300)
.HasColumnType("character varying(300)")
.HasColumnName("page")
.HasDefaultValueSql("NULL");
b.Property<string>("Platform")
.ValueGeneratedOnAdd()
.HasMaxLength(200)
.HasColumnType("character varying(200)")
.HasColumnName("platform")
.HasDefaultValueSql("NULL");
b.Property<string>("Target")
.HasColumnType("text")
.HasColumnName("target");
b.Property<int>("TenantId")
.HasColumnType("integer")
.HasColumnName("tenant_id");
b.Property<Guid?>("UserId")
.ValueGeneratedOnAdd()
.HasMaxLength(38)
.HasColumnType("uuid")
.HasColumnName("user_id")
.HasDefaultValueSql("NULL")
.IsFixedLength();
b.HasKey("Id");
b.HasIndex("TenantId", "Date")
.HasDatabaseName("date");
b.ToTable("audit_events", "onlyoffice");
});
modelBuilder.Entity("ASC.MessagingSystem.EF.Model.LoginEvent", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<int?>("Action")
.HasColumnType("integer")
.HasColumnName("action");
b.Property<bool>("Active")
.HasColumnType("boolean")
.HasColumnName("active");
b.Property<string>("Browser")
.ValueGeneratedOnAdd()
.HasMaxLength(200)
.HasColumnType("character varying(200)")
.HasColumnName("browser")
.HasDefaultValueSql("NULL::character varying");
b.Property<DateTime>("Date")
.HasColumnType("timestamp with time zone")
.HasColumnName("date");
b.Property<string>("DescriptionRaw")
.ValueGeneratedOnAdd()
.HasMaxLength(500)
.HasColumnType("character varying(500)")
.HasColumnName("description")
.HasDefaultValueSql("NULL");
b.Property<string>("Ip")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("ip")
.HasDefaultValueSql("NULL");
b.Property<string>("Login")
.ValueGeneratedOnAdd()
.HasMaxLength(200)
.HasColumnType("character varying(200)")
.HasColumnName("login")
.HasDefaultValueSql("NULL");
b.Property<string>("Page")
.ValueGeneratedOnAdd()
.HasMaxLength(300)
.HasColumnType("character varying(300)")
.HasColumnName("page")
.HasDefaultValueSql("NULL");
b.Property<string>("Platform")
.ValueGeneratedOnAdd()
.HasMaxLength(200)
.HasColumnType("character varying(200)")
.HasColumnName("platform")
.HasDefaultValueSql("NULL");
b.Property<int>("TenantId")
.HasColumnType("integer")
.HasColumnName("tenant_id");
b.Property<Guid?>("UserId")
.IsRequired()
.HasMaxLength(38)
.HasColumnType("uuid")
.HasColumnName("user_id")
.IsFixedLength();
b.HasKey("Id");
b.HasIndex("Date")
.HasDatabaseName("date_login_events");
b.HasIndex("UserId", "TenantId")
.HasDatabaseName("tenant_id_login_events");
b.ToTable("login_events", "onlyoffice");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.HasOne("ASC.Core.Common.EF.Model.DbTenant", "Tenant")
.WithOne("Partner")
.HasForeignKey("ASC.Core.Common.EF.Model.DbTenantPartner", "TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tenant");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Navigation("Partner");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,44 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ASC.Migrations.PostgreSql.SaaS.Migrations.Messages
{
/// <inheritdoc />
public partial class MessagesContextUpgrade1 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "tenants_partners",
schema: "onlyoffice",
columns: table => new
{
tenantid = table.Column<int>(name: "tenant_id", type: "integer", nullable: false),
partnerid = table.Column<string>(name: "partner_id", type: "character varying(36)", maxLength: 36, nullable: true, defaultValueSql: "NULL"),
affiliateid = table.Column<string>(name: "affiliate_id", type: "character varying(50)", maxLength: 50, nullable: true, defaultValueSql: "NULL"),
campaign = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: true, defaultValueSql: "NULL")
},
constraints: table =>
{
table.PrimaryKey("tenants_partners_pkey", x => x.tenantid);
table.ForeignKey(
name: "FK_tenants_partners_tenants_tenants_tenant_id",
column: x => x.tenantid,
principalSchema: "onlyoffice",
principalTable: "tenants_tenants",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "tenants_partners",
schema: "onlyoffice");
}
}
}

View File

@ -18,7 +18,7 @@ namespace ASC.Migrations.PostgreSql.Migrations
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn)
.HasAnnotation("ProductVersion", "6.0.7")
.HasAnnotation("ProductVersion", "7.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
@ -170,6 +170,39 @@ namespace ASC.Migrations.PostgreSql.Migrations
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.HasColumnType("integer")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("affiliate_id")
.HasDefaultValueSql("NULL");
b.Property<string>("Campaign")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("campaign")
.HasDefaultValueSql("NULL");
b.Property<string>("PartnerId")
.ValueGeneratedOnAdd()
.HasMaxLength(36)
.HasColumnType("character varying(36)")
.HasColumnName("partner_id")
.HasDefaultValueSql("NULL");
b.HasKey("TenantId")
.HasName("tenants_partners_pkey");
b.ToTable("tenants_partners", "onlyoffice");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbWebstudioSettings", b =>
{
b.Property<int>("TenantId")
@ -588,6 +621,22 @@ namespace ASC.Migrations.PostgreSql.Migrations
b.ToTable("login_events", "onlyoffice");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.HasOne("ASC.Core.Common.EF.Model.DbTenant", "Tenant")
.WithOne("Partner")
.HasForeignKey("ASC.Core.Common.EF.Model.DbTenantPartner", "TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tenant");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Navigation("Partner");
});
#pragma warning restore 612, 618
}
}

View File

@ -0,0 +1,362 @@
// <auto-generated />
using System;
using ASC.Core.Common.EF.Context;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace ASC.Migrations.PostgreSql.SaaS.Migrations.TenantDb
{
[DbContext(typeof(TenantDbContext))]
[Migration("20230816180640_TenantDbContext_Upgrade1")]
partial class TenantDbContextUpgrade1
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn)
.HasAnnotation("ProductVersion", "7.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbCoreSettings", b =>
{
b.Property<int>("Tenant")
.HasColumnType("integer")
.HasColumnName("tenant");
b.Property<string>("Id")
.HasMaxLength(128)
.HasColumnType("character varying(128)")
.HasColumnName("id");
b.Property<DateTime>("LastModified")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp with time zone")
.HasColumnName("last_modified")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
b.Property<byte[]>("Value")
.IsRequired()
.HasColumnType("bytea")
.HasColumnName("value");
b.HasKey("Tenant", "Id")
.HasName("core_settings_pkey");
b.ToTable("core_settings", "onlyoffice");
b.HasData(
new
{
Tenant = -1,
Id = "CompanyWhiteLabelSettings",
LastModified = new DateTime(2022, 7, 8, 0, 0, 0, 0, DateTimeKind.Unspecified),
Value = new byte[] { 245, 71, 4, 138, 72, 101, 23, 21, 135, 217, 206, 188, 138, 73, 108, 96, 29, 150, 3, 31, 44, 28, 62, 145, 96, 53, 57, 66, 238, 118, 93, 172, 211, 22, 244, 181, 244, 40, 146, 67, 111, 196, 162, 27, 154, 109, 248, 255, 181, 17, 253, 127, 42, 65, 19, 90, 26, 206, 203, 145, 159, 159, 243, 105, 24, 71, 188, 165, 53, 85, 57, 37, 186, 251, 57, 96, 18, 162, 218, 80, 0, 101, 250, 100, 66, 97, 24, 51, 240, 215, 216, 169, 105, 100, 15, 253, 29, 83, 182, 236, 203, 53, 68, 251, 2, 150, 149, 148, 58, 136, 84, 37, 151, 82, 92, 227, 30, 52, 111, 40, 154, 155, 7, 126, 149, 100, 169, 87, 10, 129, 228, 138, 177, 101, 77, 67, 177, 216, 189, 201, 1, 213, 136, 216, 107, 198, 253, 221, 106, 255, 198, 17, 68, 14, 110, 90, 174, 182, 68, 222, 188, 77, 157, 19, 26, 68, 86, 97, 15, 81, 24, 171, 214, 114, 191, 175, 56, 56, 48, 52, 125, 82, 253, 113, 71, 41, 201, 5, 8, 118, 162, 191, 99, 196, 48, 198, 223, 79, 204, 174, 31, 97, 236, 20, 213, 218, 85, 34, 16, 74, 196, 209, 235, 14, 71, 209, 32, 131, 195, 84, 11, 66, 74, 19, 115, 255, 99, 69, 235, 210, 204, 15, 13, 4, 143, 127, 152, 125, 212, 91 }
},
new
{
Tenant = -1,
Id = "FullTextSearchSettings",
LastModified = new DateTime(2022, 7, 8, 0, 0, 0, 0, DateTimeKind.Unspecified),
Value = new byte[] { 8, 120, 207, 5, 153, 181, 23, 202, 162, 211, 218, 237, 157, 6, 76, 62, 220, 238, 175, 67, 31, 53, 166, 246, 66, 220, 173, 160, 72, 23, 227, 81, 50, 39, 187, 177, 222, 110, 43, 171, 235, 158, 16, 119, 178, 207, 49, 140, 72, 152, 20, 84, 94, 135, 117, 1, 246, 51, 251, 190, 148, 2, 44, 252, 221, 2, 91, 83, 149, 151, 58, 245, 16, 148, 52, 8, 187, 86, 150, 46, 227, 93, 163, 95, 47, 131, 116, 207, 95, 209, 38, 149, 53, 148, 73, 215, 206, 251, 194, 199, 189, 17, 42, 229, 135, 82, 23, 154, 162, 165, 158, 94, 23, 128, 30, 88, 12, 204, 96, 250, 236, 142, 189, 211, 214, 18, 196, 136, 102, 102, 217, 109, 108, 240, 96, 96, 94, 100, 201, 10, 31, 170, 128, 192 }
},
new
{
Tenant = -1,
Id = "SmtpSettings",
LastModified = new DateTime(2022, 7, 8, 0, 0, 0, 0, DateTimeKind.Unspecified),
Value = new byte[] { 240, 82, 224, 144, 161, 163, 117, 13, 173, 205, 78, 153, 97, 218, 4, 170, 81, 239, 1, 151, 226, 192, 98, 60, 241, 44, 88, 56, 191, 164, 10, 155, 72, 186, 239, 203, 227, 113, 88, 119, 49, 215, 227, 220, 158, 124, 96, 9, 116, 47, 158, 65, 93, 86, 219, 15, 10, 224, 142, 50, 248, 144, 75, 44, 68, 28, 198, 87, 198, 69, 67, 234, 238, 38, 32, 68, 162, 139, 67, 53, 220, 176, 240, 196, 233, 64, 29, 137, 31, 160, 99, 105, 249, 132, 202, 45, 71, 92, 134, 194, 55, 145, 121, 97, 197, 130, 119, 105, 131, 21, 133, 35, 10, 102, 172, 119, 135, 230, 251, 86, 253, 62, 55, 56, 146, 103, 164, 106 }
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<string>("Alias")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("character varying(100)")
.HasColumnName("alias");
b.Property<bool>("Calls")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasColumnName("calls")
.HasDefaultValueSql("true");
b.Property<DateTime>("CreationDateTime")
.HasColumnType("timestamp with time zone")
.HasColumnName("creationdatetime");
b.Property<int>("Industry")
.HasColumnType("integer")
.HasColumnName("industry");
b.Property<string>("Language")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(10)
.HasColumnType("character(10)")
.HasColumnName("language")
.HasDefaultValueSql("'en-US'")
.IsFixedLength();
b.Property<DateTime>("LastModified")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp with time zone")
.HasColumnName("last_modified")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
b.Property<string>("MappedDomain")
.ValueGeneratedOnAdd()
.HasMaxLength(100)
.HasColumnType("character varying(100)")
.HasColumnName("mappeddomain")
.HasDefaultValueSql("NULL");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("name");
b.Property<Guid?>("OwnerId")
.ValueGeneratedOnAdd()
.HasMaxLength(38)
.HasColumnType("uuid")
.HasColumnName("owner_id")
.HasDefaultValueSql("NULL");
b.Property<string>("PaymentId")
.ValueGeneratedOnAdd()
.HasMaxLength(38)
.HasColumnType("character varying(38)")
.HasColumnName("payment_id")
.HasDefaultValueSql("NULL");
b.Property<bool>("Spam")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasColumnName("spam")
.HasDefaultValueSql("true");
b.Property<int>("Status")
.HasColumnType("integer")
.HasColumnName("status");
b.Property<DateTime?>("StatusChanged")
.HasColumnType("timestamp with time zone")
.HasColumnName("statuschanged");
b.Property<string>("TimeZone")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("timezone")
.HasDefaultValueSql("NULL");
b.Property<int>("TrustedDomainsEnabled")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("trusteddomainsenabled")
.HasDefaultValueSql("1");
b.Property<string>("TrustedDomainsRaw")
.ValueGeneratedOnAdd()
.HasMaxLength(1024)
.HasColumnType("character varying(1024)")
.HasColumnName("trusteddomains")
.HasDefaultValueSql("NULL");
b.Property<int>("Version")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("version")
.HasDefaultValueSql("2");
b.Property<DateTime?>("Version_Changed")
.HasColumnType("timestamp with time zone")
.HasColumnName("version_changed");
b.HasKey("Id");
b.HasIndex("Alias")
.IsUnique()
.HasDatabaseName("alias");
b.HasIndex("LastModified")
.HasDatabaseName("last_modified_tenants_tenants");
b.HasIndex("MappedDomain")
.HasDatabaseName("mappeddomain");
b.HasIndex("Version")
.HasDatabaseName("version");
b.ToTable("tenants_tenants", "onlyoffice");
b.HasData(
new
{
Id = 1,
Alias = "localhost",
Calls = false,
CreationDateTime = new DateTime(2021, 3, 9, 17, 46, 59, 97, DateTimeKind.Utc).AddTicks(4317),
Industry = 0,
LastModified = new DateTime(2022, 7, 8, 0, 0, 0, 0, DateTimeKind.Unspecified),
Name = "Web Office",
OwnerId = new Guid("66faa6e4-f133-11ea-b126-00ffeec8b4ef"),
Spam = false,
Status = 0,
TrustedDomainsEnabled = 0,
Version = 0
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantForbiden", b =>
{
b.Property<string>("Address")
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("address");
b.HasKey("Address")
.HasName("tenants_forbiden_pkey");
b.ToTable("tenants_forbiden", "onlyoffice");
b.HasData(
new
{
Address = "controlpanel"
},
new
{
Address = "localhost"
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.HasColumnType("integer")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("affiliate_id")
.HasDefaultValueSql("NULL");
b.Property<string>("Campaign")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("campaign")
.HasDefaultValueSql("NULL");
b.Property<string>("PartnerId")
.ValueGeneratedOnAdd()
.HasMaxLength(36)
.HasColumnType("character varying(36)")
.HasColumnName("partner_id")
.HasDefaultValueSql("NULL");
b.HasKey("TenantId")
.HasName("tenants_partners_pkey");
b.ToTable("tenants_partners", "onlyoffice");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantVersion", b =>
{
b.Property<int>("Id")
.HasColumnType("integer")
.HasColumnName("id");
b.Property<int>("DefaultVersion")
.HasColumnType("integer")
.HasColumnName("default_version");
b.Property<string>("Url")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("url");
b.Property<string>("Version")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("character varying(64)")
.HasColumnName("version");
b.Property<bool>("Visible")
.HasColumnType("boolean")
.HasColumnName("visible");
b.HasKey("Id");
b.ToTable("tenants_version", "onlyoffice");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.TenantIpRestrictions", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<bool>("ForAdmin")
.HasColumnType("TINYINT(1)")
.HasColumnName("for_admin");
b.Property<string>("Ip")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("ip");
b.Property<int>("Tenant")
.HasColumnType("integer")
.HasColumnName("tenant");
b.HasKey("Id");
b.HasIndex("Tenant")
.HasDatabaseName("tenant_tenants_iprestrictions");
b.ToTable("tenants_iprestrictions", "onlyoffice");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.HasOne("ASC.Core.Common.EF.Model.DbTenant", "Tenant")
.WithOne("Partner")
.HasForeignKey("ASC.Core.Common.EF.Model.DbTenantPartner", "TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tenant");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Navigation("Partner");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,44 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ASC.Migrations.PostgreSql.SaaS.Migrations.TenantDb
{
/// <inheritdoc />
public partial class TenantDbContextUpgrade1 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "tenants_partners",
schema: "onlyoffice",
columns: table => new
{
tenantid = table.Column<int>(name: "tenant_id", type: "integer", nullable: false),
partnerid = table.Column<string>(name: "partner_id", type: "character varying(36)", maxLength: 36, nullable: true, defaultValueSql: "NULL"),
affiliateid = table.Column<string>(name: "affiliate_id", type: "character varying(50)", maxLength: 50, nullable: true, defaultValueSql: "NULL"),
campaign = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: true, defaultValueSql: "NULL")
},
constraints: table =>
{
table.PrimaryKey("tenants_partners_pkey", x => x.tenantid);
table.ForeignKey(
name: "FK_tenants_partners_tenants_tenants_tenant_id",
column: x => x.tenantid,
principalSchema: "onlyoffice",
principalTable: "tenants_tenants",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "tenants_partners",
schema: "onlyoffice");
}
}
}

View File

@ -18,7 +18,7 @@ namespace ASC.Migrations.PostgreSql.Migrations
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn)
.HasAnnotation("ProductVersion", "6.0.7")
.HasAnnotation("ProductVersion", "7.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbCoreSettings", b =>
@ -244,6 +244,39 @@ namespace ASC.Migrations.PostgreSql.Migrations
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.HasColumnType("integer")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("affiliate_id")
.HasDefaultValueSql("NULL");
b.Property<string>("Campaign")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("campaign")
.HasDefaultValueSql("NULL");
b.Property<string>("PartnerId")
.ValueGeneratedOnAdd()
.HasMaxLength(36)
.HasColumnType("character varying(36)")
.HasColumnName("partner_id")
.HasDefaultValueSql("NULL");
b.HasKey("TenantId")
.HasName("tenants_partners_pkey");
b.ToTable("tenants_partners", "onlyoffice");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantVersion", b =>
{
b.Property<int>("Id")
@ -304,6 +337,22 @@ namespace ASC.Migrations.PostgreSql.Migrations
b.ToTable("tenants_iprestrictions", "onlyoffice");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.HasOne("ASC.Core.Common.EF.Model.DbTenant", "Tenant")
.WithOne("Partner")
.HasForeignKey("ASC.Core.Common.EF.Model.DbTenantPartner", "TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tenant");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Navigation("Partner");
});
#pragma warning restore 612, 618
}
}

View File

@ -0,0 +1,325 @@
// <auto-generated />
using System;
using ASC.Core.Common.EF.Context;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace ASC.Migrations.PostgreSql.SaaS.Migrations.WebstudioDb
{
[DbContext(typeof(WebstudioDbContext))]
[Migration("20230816180641_WebstudioDbContext_Upgrade1")]
partial class WebstudioDbContextUpgrade1
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn)
.HasAnnotation("ProductVersion", "7.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<string>("Alias")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("character varying(100)")
.HasColumnName("alias");
b.Property<bool>("Calls")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasColumnName("calls")
.HasDefaultValueSql("true");
b.Property<DateTime>("CreationDateTime")
.HasColumnType("timestamp with time zone")
.HasColumnName("creationdatetime");
b.Property<int>("Industry")
.HasColumnType("integer")
.HasColumnName("industry");
b.Property<string>("Language")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(10)
.HasColumnType("character(10)")
.HasColumnName("language")
.HasDefaultValueSql("'en-US'")
.IsFixedLength();
b.Property<DateTime>("LastModified")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp with time zone")
.HasColumnName("last_modified")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
b.Property<string>("MappedDomain")
.ValueGeneratedOnAdd()
.HasMaxLength(100)
.HasColumnType("character varying(100)")
.HasColumnName("mappeddomain")
.HasDefaultValueSql("NULL");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("name");
b.Property<Guid?>("OwnerId")
.ValueGeneratedOnAdd()
.HasMaxLength(38)
.HasColumnType("uuid")
.HasColumnName("owner_id")
.HasDefaultValueSql("NULL");
b.Property<string>("PaymentId")
.ValueGeneratedOnAdd()
.HasMaxLength(38)
.HasColumnType("character varying(38)")
.HasColumnName("payment_id")
.HasDefaultValueSql("NULL");
b.Property<bool>("Spam")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasColumnName("spam")
.HasDefaultValueSql("true");
b.Property<int>("Status")
.HasColumnType("integer")
.HasColumnName("status");
b.Property<DateTime?>("StatusChanged")
.HasColumnType("timestamp with time zone")
.HasColumnName("statuschanged");
b.Property<string>("TimeZone")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("timezone")
.HasDefaultValueSql("NULL");
b.Property<int>("TrustedDomainsEnabled")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("trusteddomainsenabled")
.HasDefaultValueSql("1");
b.Property<string>("TrustedDomainsRaw")
.ValueGeneratedOnAdd()
.HasMaxLength(1024)
.HasColumnType("character varying(1024)")
.HasColumnName("trusteddomains")
.HasDefaultValueSql("NULL");
b.Property<int>("Version")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("version")
.HasDefaultValueSql("2");
b.Property<DateTime?>("Version_Changed")
.HasColumnType("timestamp with time zone")
.HasColumnName("version_changed");
b.HasKey("Id");
b.HasIndex("Alias")
.IsUnique()
.HasDatabaseName("alias");
b.HasIndex("LastModified")
.HasDatabaseName("last_modified_tenants_tenants");
b.HasIndex("MappedDomain")
.HasDatabaseName("mappeddomain");
b.HasIndex("Version")
.HasDatabaseName("version");
b.ToTable("tenants_tenants", "onlyoffice");
b.HasData(
new
{
Id = 1,
Alias = "localhost",
Calls = false,
CreationDateTime = new DateTime(2021, 3, 9, 17, 46, 59, 97, DateTimeKind.Utc).AddTicks(4317),
Industry = 0,
LastModified = new DateTime(2022, 7, 8, 0, 0, 0, 0, DateTimeKind.Unspecified),
Name = "Web Office",
OwnerId = new Guid("66faa6e4-f133-11ea-b126-00ffeec8b4ef"),
Spam = false,
Status = 0,
TrustedDomainsEnabled = 0,
Version = 0
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.HasColumnType("integer")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("affiliate_id")
.HasDefaultValueSql("NULL");
b.Property<string>("Campaign")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("campaign")
.HasDefaultValueSql("NULL");
b.Property<string>("PartnerId")
.ValueGeneratedOnAdd()
.HasMaxLength(36)
.HasColumnType("character varying(36)")
.HasColumnName("partner_id")
.HasDefaultValueSql("NULL");
b.HasKey("TenantId")
.HasName("tenants_partners_pkey");
b.ToTable("tenants_partners", "onlyoffice");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbWebstudioIndex", b =>
{
b.Property<string>("IndexName")
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("index_name");
b.Property<DateTime>("LastModified")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp with time zone")
.HasColumnName("last_modified")
.HasDefaultValueSql("CURRENT_TIMESTAMP");
b.HasKey("IndexName")
.HasName("webstudio_index_pkey");
b.ToTable("webstudio_index", "onlyoffice");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbWebstudioSettings", b =>
{
b.Property<int>("TenantId")
.HasColumnType("integer")
.HasColumnName("TenantID");
b.Property<Guid>("Id")
.HasMaxLength(64)
.HasColumnType("uuid")
.HasColumnName("ID");
b.Property<Guid>("UserId")
.HasMaxLength(64)
.HasColumnType("uuid")
.HasColumnName("UserID");
b.Property<string>("Data")
.IsRequired()
.HasColumnType("text");
b.HasKey("TenantId", "Id", "UserId")
.HasName("webstudio_settings_pkey");
b.HasIndex("Id")
.HasDatabaseName("ID");
b.ToTable("webstudio_settings", "onlyoffice");
b.HasData(
new
{
TenantId = 1,
Id = new Guid("9a925891-1f92-4ed7-b277-d6f649739f06"),
UserId = new Guid("00000000-0000-0000-0000-000000000000"),
Data = "{\"Completed\":false}"
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbWebstudioUserVisit", b =>
{
b.Property<int>("TenantId")
.HasColumnType("integer")
.HasColumnName("tenantid");
b.Property<DateTime>("VisitDate")
.HasColumnType("timestamp with time zone")
.HasColumnName("visitdate");
b.Property<Guid>("ProductId")
.HasMaxLength(38)
.HasColumnType("uuid")
.HasColumnName("productid");
b.Property<Guid>("UserId")
.HasMaxLength(38)
.HasColumnType("uuid")
.HasColumnName("userid");
b.Property<DateTime?>("FirstVisitTime")
.HasColumnType("timestamp with time zone")
.HasColumnName("firstvisittime");
b.Property<DateTime?>("LastVisitTime")
.HasColumnType("timestamp with time zone")
.HasColumnName("lastvisittime");
b.Property<int>("VisitCount")
.HasColumnType("integer")
.HasColumnName("visitcount");
b.HasKey("TenantId", "VisitDate", "ProductId", "UserId")
.HasName("webstudio_uservisit_pkey");
b.HasIndex("VisitDate")
.HasDatabaseName("visitdate");
b.ToTable("webstudio_uservisit", "onlyoffice");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.HasOne("ASC.Core.Common.EF.Model.DbTenant", "Tenant")
.WithOne("Partner")
.HasForeignKey("ASC.Core.Common.EF.Model.DbTenantPartner", "TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tenant");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Navigation("Partner");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,44 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ASC.Migrations.PostgreSql.SaaS.Migrations.WebstudioDb
{
/// <inheritdoc />
public partial class WebstudioDbContextUpgrade1 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "tenants_partners",
schema: "onlyoffice",
columns: table => new
{
tenantid = table.Column<int>(name: "tenant_id", type: "integer", nullable: false),
partnerid = table.Column<string>(name: "partner_id", type: "character varying(36)", maxLength: 36, nullable: true, defaultValueSql: "NULL"),
affiliateid = table.Column<string>(name: "affiliate_id", type: "character varying(50)", maxLength: 50, nullable: true, defaultValueSql: "NULL"),
campaign = table.Column<string>(type: "character varying(50)", maxLength: 50, nullable: true, defaultValueSql: "NULL")
},
constraints: table =>
{
table.PrimaryKey("tenants_partners_pkey", x => x.tenantid);
table.ForeignKey(
name: "FK_tenants_partners_tenants_tenants_tenant_id",
column: x => x.tenantid,
principalSchema: "onlyoffice",
principalTable: "tenants_tenants",
principalColumn: "id",
onDelete: ReferentialAction.Cascade);
});
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "tenants_partners",
schema: "onlyoffice");
}
}
}

View File

@ -18,7 +18,7 @@ namespace ASC.Migrations.PostgreSql.Migrations
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn)
.HasAnnotation("ProductVersion", "6.0.7")
.HasAnnotation("ProductVersion", "7.0.2")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
@ -170,6 +170,39 @@ namespace ASC.Migrations.PostgreSql.Migrations
});
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.Property<int>("TenantId")
.HasColumnType("integer")
.HasColumnName("tenant_id");
b.Property<string>("AffiliateId")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("affiliate_id")
.HasDefaultValueSql("NULL");
b.Property<string>("Campaign")
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("campaign")
.HasDefaultValueSql("NULL");
b.Property<string>("PartnerId")
.ValueGeneratedOnAdd()
.HasMaxLength(36)
.HasColumnType("character varying(36)")
.HasColumnName("partner_id")
.HasDefaultValueSql("NULL");
b.HasKey("TenantId")
.HasName("tenants_partners_pkey");
b.ToTable("tenants_partners", "onlyoffice");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbWebstudioIndex", b =>
{
b.Property<string>("IndexName")
@ -267,6 +300,22 @@ namespace ASC.Migrations.PostgreSql.Migrations
b.ToTable("webstudio_uservisit", "onlyoffice");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenantPartner", b =>
{
b.HasOne("ASC.Core.Common.EF.Model.DbTenant", "Tenant")
.WithOne("Partner")
.HasForeignKey("ASC.Core.Common.EF.Model.DbTenantPartner", "TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tenant");
});
modelBuilder.Entity("ASC.Core.Common.EF.Model.DbTenant", b =>
{
b.Navigation("Partner");
});
#pragma warning restore 612, 618
}
}

View File

@ -100,7 +100,9 @@ public class PaymentController : ControllerBase
var currency = _regionHelper.GetCurrencyFromRequest();
return await _tariffService.GetShoppingUri(Tenant.Id, currency,
return await _tariffService.GetShoppingUri(Tenant.Id,
Tenant.AffiliateId,
currency,
Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName,
_userManager.GetUsers(_securityContext.CurrentAccount.ID).Email,
inDto.Quantity,