mirror of
https://github.com/bitwarden/server.git
synced 2024-12-27 17:47:37 +01:00
b13dda2799
* EF Database Support Init (#1221) * scaffolding for ef support * deleted old postgres repos * added tables to oncreate * updated all the things to .NET 5 * Addition to #1221: Migrated DockerFiles from dotnet/3.1 to 5.0 (#1223) * Migrated DockerFiles from dotnet/3.1 to 5.0 * Migrated SSO/Dockerfile from dotnet 3.1 to 5.0 Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com> * EFDatabaseSupport: Updated links and description in README.md and SETUP.md (#1232) * Updated requirements in README.md * Updated link to documentation of app-secrets * upgraded dotnet version to 5.0 * Ef database support implementation examples (#1265) * mostly finished testing the user repo * finished testing user repo * finished org, user, ssoconfig, and ssouser ef implementations * removed unused prop * fixed a sql file * fixed a spacing issue * fixed a spacing issue * removed extra database creation * refactoring * MsSql => SqlServer * refactoring * code review fixes * build fix * code review * continued attempts to fix the the build * skipped another test * finished all create test * initial pass at several repos * continued building out repos * initial pass at several repos * initial pass at device repo * initial pass at collection repo * initial run of all Entity Framework implementations * signup, signin, create/edit ciphers works * sync working * all web vault pages seem to load with 100% 200s * bulkcopy, folders, and favorites * group and collection management * sso, groups, emergency access, send * get basic creates matching on all repos * got everything building again post merge * removed some IDE config files * cleanup * no more notimplemented methods in the cipher repo * no more not implementeds everywhere * cleaned up schema/navigation properties and fixed tests * removed a sql comment that was written in c# style * fixed build issues from merge * removed unsupported db providers * formatting * code review refactors * naming cleanup for queries * added provider methods * cipher repo cleanup * implemented several missing procedures from the EF implementation surround account revision dates, keys, and storage * fixed the build * added a null check * consolidated some cipher repo methods * formatting fix * cleaned up indentation of queries * removed .idea file * generated postgres migrations * added mysql migrations * formatting * Bug Fixes & Formatting * Formatting * fixed a bug with bulk import when using MySql * code review fixes * fixed the build * implemented new methods * formatting * fixed the build * cleaned up select statements in ef queries * formatting * formatting * formatting Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
1131 lines
61 KiB
C#
1131 lines
61 KiB
C#
using System;
|
|
using Microsoft.EntityFrameworkCore.Metadata;
|
|
using Microsoft.EntityFrameworkCore.Migrations;
|
|
|
|
namespace Bit.MySqlMigrations.Migrations
|
|
{
|
|
public partial class Init : Migration
|
|
{
|
|
protected override void Up(MigrationBuilder migrationBuilder)
|
|
{
|
|
migrationBuilder.AlterDatabase()
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Event",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
Date = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
Type = table.Column<int>(type: "int", nullable: false),
|
|
UserId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
|
OrganizationId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
|
CipherId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
|
CollectionId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
|
PolicyId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
|
GroupId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
|
OrganizationUserId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
|
DeviceType = table.Column<byte>(type: "tinyint unsigned", nullable: true),
|
|
IpAddress = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
ActingUserId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci")
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Event", x => x.Id);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Grant",
|
|
columns: table => new
|
|
{
|
|
Key = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Type = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
SubjectId = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
SessionId = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
ClientId = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Description = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
ExpirationDate = table.Column<DateTime>(type: "datetime(6)", nullable: true),
|
|
ConsumedDate = table.Column<DateTime>(type: "datetime(6)", nullable: true),
|
|
Data = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4")
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Grant", x => x.Key);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Installation",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
Email = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Key = table.Column<string>(type: "varchar(150)", maxLength: 150, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Enabled = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Installation", x => x.Id);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Organization",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
Identifier = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Name = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
BusinessName = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
BusinessAddress1 = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
BusinessAddress2 = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
BusinessAddress3 = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
BusinessCountry = table.Column<string>(type: "varchar(2)", maxLength: 2, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
BusinessTaxNumber = table.Column<string>(type: "varchar(30)", maxLength: 30, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
BillingEmail = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Plan = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
PlanType = table.Column<byte>(type: "tinyint unsigned", nullable: false),
|
|
Seats = table.Column<int>(type: "int", nullable: true),
|
|
MaxCollections = table.Column<short>(type: "smallint", nullable: true),
|
|
UsePolicies = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
UseSso = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
UseGroups = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
UseDirectory = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
UseEvents = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
UseTotp = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
Use2fa = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
UseApi = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
UseResetPassword = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
SelfHost = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
UsersGetPremium = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
Storage = table.Column<long>(type: "bigint", nullable: true),
|
|
MaxStorageGb = table.Column<short>(type: "smallint", nullable: true),
|
|
Gateway = table.Column<byte>(type: "tinyint unsigned", nullable: true),
|
|
GatewayCustomerId = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
GatewaySubscriptionId = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
ReferenceData = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Enabled = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
LicenseKey = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
ApiKey = table.Column<string>(type: "varchar(30)", maxLength: 30, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
PublicKey = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
PrivateKey = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
TwoFactorProviders = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
ExpirationDate = table.Column<DateTime>(type: "datetime(6)", nullable: true),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
RevisionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Organization", x => x.Id);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Provider",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
Name = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
BusinessName = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
BusinessAddress1 = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
BusinessAddress2 = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
BusinessAddress3 = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
BusinessCountry = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
BusinessTaxNumber = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
BillingEmail = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Status = table.Column<byte>(type: "tinyint unsigned", nullable: false),
|
|
Enabled = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
RevisionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Provider", x => x.Id);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "TaxRate",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Country = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
State = table.Column<string>(type: "varchar(2)", maxLength: 2, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
PostalCode = table.Column<string>(type: "varchar(10)", maxLength: 10, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Rate = table.Column<decimal>(type: "decimal(65,30)", nullable: false),
|
|
Active = table.Column<bool>(type: "tinyint(1)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_TaxRate", x => x.Id);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "User",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
Name = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Email = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: false)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
EmailVerified = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
MasterPassword = table.Column<string>(type: "varchar(300)", maxLength: 300, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
MasterPasswordHint = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Culture = table.Column<string>(type: "varchar(10)", maxLength: 10, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
SecurityStamp = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
TwoFactorProviders = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
TwoFactorRecoveryCode = table.Column<string>(type: "varchar(32)", maxLength: 32, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
EquivalentDomains = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
ExcludedGlobalEquivalentDomains = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
AccountRevisionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
Key = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
PublicKey = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
PrivateKey = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Premium = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
PremiumExpirationDate = table.Column<DateTime>(type: "datetime(6)", nullable: true),
|
|
RenewalReminderDate = table.Column<DateTime>(type: "datetime(6)", nullable: true),
|
|
Storage = table.Column<long>(type: "bigint", nullable: true),
|
|
MaxStorageGb = table.Column<short>(type: "smallint", nullable: true),
|
|
Gateway = table.Column<byte>(type: "tinyint unsigned", nullable: true),
|
|
GatewayCustomerId = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
GatewaySubscriptionId = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
ReferenceData = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
LicenseKey = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
ApiKey = table.Column<string>(type: "varchar(30)", maxLength: 30, nullable: false)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Kdf = table.Column<byte>(type: "tinyint unsigned", nullable: false),
|
|
KdfIterations = table.Column<int>(type: "int", nullable: false),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
RevisionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_User", x => x.Id);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Collection",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
OrganizationId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
Name = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
ExternalId = table.Column<string>(type: "varchar(300)", maxLength: 300, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
RevisionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Collection", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Collection_Organization_OrganizationId",
|
|
column: x => x.OrganizationId,
|
|
principalTable: "Organization",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Group",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
OrganizationId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
Name = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
AccessAll = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
ExternalId = table.Column<string>(type: "varchar(300)", maxLength: 300, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
RevisionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Group", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Group_Organization_OrganizationId",
|
|
column: x => x.OrganizationId,
|
|
principalTable: "Organization",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Policy",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
OrganizationId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
Type = table.Column<byte>(type: "tinyint unsigned", nullable: false),
|
|
Data = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Enabled = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
RevisionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Policy", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Policy_Organization_OrganizationId",
|
|
column: x => x.OrganizationId,
|
|
principalTable: "Organization",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "SsoConfig",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<long>(type: "bigint", nullable: false)
|
|
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
|
|
Enabled = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
OrganizationId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
Data = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
RevisionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_SsoConfig", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_SsoConfig_Organization_OrganizationId",
|
|
column: x => x.OrganizationId,
|
|
principalTable: "Organization",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "ProviderOrganization",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
ProviderId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
OrganizationId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
Key = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Settings = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
RevisionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_ProviderOrganization", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_ProviderOrganization_Organization_OrganizationId",
|
|
column: x => x.OrganizationId,
|
|
principalTable: "Organization",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_ProviderOrganization_Provider_ProviderId",
|
|
column: x => x.ProviderId,
|
|
principalTable: "Provider",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Cipher",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
UserId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
|
OrganizationId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
|
Type = table.Column<byte>(type: "tinyint unsigned", nullable: false),
|
|
Data = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Favorites = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Folders = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Attachments = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
RevisionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
DeletedDate = table.Column<DateTime>(type: "datetime(6)", nullable: true),
|
|
Reprompt = table.Column<byte>(type: "tinyint unsigned", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Cipher", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Cipher_Organization_OrganizationId",
|
|
column: x => x.OrganizationId,
|
|
principalTable: "Organization",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Cipher_User_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "User",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Device",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
UserId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
Name = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Type = table.Column<byte>(type: "tinyint unsigned", nullable: false),
|
|
Identifier = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
PushToken = table.Column<string>(type: "varchar(255)", maxLength: 255, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
RevisionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Device", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Device_User_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "User",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "EmergencyAccess",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
GrantorId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
GranteeId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
|
Email = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
KeyEncrypted = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Type = table.Column<byte>(type: "tinyint unsigned", nullable: false),
|
|
Status = table.Column<byte>(type: "tinyint unsigned", nullable: false),
|
|
WaitTimeDays = table.Column<int>(type: "int", nullable: false),
|
|
RecoveryInitiatedDate = table.Column<DateTime>(type: "datetime(6)", nullable: true),
|
|
LastNotificationDate = table.Column<DateTime>(type: "datetime(6)", nullable: true),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
RevisionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_EmergencyAccess", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_EmergencyAccess_User_GranteeId",
|
|
column: x => x.GranteeId,
|
|
principalTable: "User",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_EmergencyAccess_User_GrantorId",
|
|
column: x => x.GrantorId,
|
|
principalTable: "User",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Folder",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
UserId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
Name = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
RevisionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Folder", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Folder_User_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "User",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "OrganizationUser",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
OrganizationId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
UserId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
|
Email = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Key = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
ResetPasswordKey = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Status = table.Column<byte>(type: "tinyint unsigned", nullable: false),
|
|
Type = table.Column<byte>(type: "tinyint unsigned", nullable: false),
|
|
AccessAll = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
ExternalId = table.Column<string>(type: "varchar(300)", maxLength: 300, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
RevisionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
Permissions = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4")
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_OrganizationUser", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_OrganizationUser_Organization_OrganizationId",
|
|
column: x => x.OrganizationId,
|
|
principalTable: "Organization",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_OrganizationUser_User_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "User",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "ProviderUser",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
ProviderId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
UserId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
|
Email = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Key = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Status = table.Column<byte>(type: "tinyint unsigned", nullable: false),
|
|
Type = table.Column<byte>(type: "tinyint unsigned", nullable: false),
|
|
Permissions = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
RevisionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_ProviderUser", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_ProviderUser_Provider_ProviderId",
|
|
column: x => x.ProviderId,
|
|
principalTable: "Provider",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_ProviderUser_User_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "User",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Send",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
UserId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
|
OrganizationId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
|
Type = table.Column<byte>(type: "tinyint unsigned", nullable: false),
|
|
Data = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Key = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Password = table.Column<string>(type: "varchar(300)", maxLength: 300, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
MaxAccessCount = table.Column<int>(type: "int", nullable: true),
|
|
AccessCount = table.Column<int>(type: "int", nullable: false),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
RevisionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
ExpirationDate = table.Column<DateTime>(type: "datetime(6)", nullable: true),
|
|
DeletionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
Disabled = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
HideEmail = table.Column<bool>(type: "tinyint(1)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Send", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Send_Organization_OrganizationId",
|
|
column: x => x.OrganizationId,
|
|
principalTable: "Organization",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Send_User_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "User",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "SsoUser",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<long>(type: "bigint", nullable: false)
|
|
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
|
|
UserId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
OrganizationId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
|
ExternalId = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_SsoUser", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_SsoUser_Organization_OrganizationId",
|
|
column: x => x.OrganizationId,
|
|
principalTable: "Organization",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_SsoUser_User_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "User",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Transaction",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
UserId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
|
OrganizationId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
|
Type = table.Column<byte>(type: "tinyint unsigned", nullable: false),
|
|
Amount = table.Column<decimal>(type: "decimal(65,30)", nullable: false),
|
|
Refunded = table.Column<bool>(type: "tinyint(1)", nullable: true),
|
|
RefundedAmount = table.Column<decimal>(type: "decimal(65,30)", nullable: true),
|
|
Details = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
PaymentMethodType = table.Column<byte>(type: "tinyint unsigned", nullable: true),
|
|
Gateway = table.Column<byte>(type: "tinyint unsigned", nullable: true),
|
|
GatewayId = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Transaction", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Transaction_Organization_OrganizationId",
|
|
column: x => x.OrganizationId,
|
|
principalTable: "Organization",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Transaction_User_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "User",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "U2f",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
|
|
UserId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
KeyHandle = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Challenge = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
AppId = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
Version = table.Column<string>(type: "varchar(20)", maxLength: 20, nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_U2f", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_U2f_User_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "User",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "CollectionGroups",
|
|
columns: table => new
|
|
{
|
|
CollectionId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
GroupId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
ReadOnly = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
HidePasswords = table.Column<bool>(type: "tinyint(1)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_CollectionGroups", x => new { x.CollectionId, x.GroupId });
|
|
table.ForeignKey(
|
|
name: "FK_CollectionGroups_Collection_CollectionId",
|
|
column: x => x.CollectionId,
|
|
principalTable: "Collection",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_CollectionGroups_Group_GroupId",
|
|
column: x => x.GroupId,
|
|
principalTable: "Group",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "CollectionCipher",
|
|
columns: table => new
|
|
{
|
|
CollectionId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
CipherId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_CollectionCipher", x => new { x.CollectionId, x.CipherId });
|
|
table.ForeignKey(
|
|
name: "FK_CollectionCipher_Cipher_CipherId",
|
|
column: x => x.CipherId,
|
|
principalTable: "Cipher",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_CollectionCipher_Collection_CollectionId",
|
|
column: x => x.CollectionId,
|
|
principalTable: "Collection",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "CollectionUsers",
|
|
columns: table => new
|
|
{
|
|
CollectionId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
OrganizationUserId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
UserId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
|
|
ReadOnly = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
|
HidePasswords = table.Column<bool>(type: "tinyint(1)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_CollectionUsers", x => new { x.CollectionId, x.OrganizationUserId });
|
|
table.ForeignKey(
|
|
name: "FK_CollectionUsers_Collection_CollectionId",
|
|
column: x => x.CollectionId,
|
|
principalTable: "Collection",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_CollectionUsers_OrganizationUser_OrganizationUserId",
|
|
column: x => x.OrganizationUserId,
|
|
principalTable: "OrganizationUser",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_CollectionUsers_User_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "User",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "GroupUser",
|
|
columns: table => new
|
|
{
|
|
GroupId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
OrganizationUserId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
UserId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci")
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_GroupUser", x => new { x.GroupId, x.OrganizationUserId });
|
|
table.ForeignKey(
|
|
name: "FK_GroupUser_Group_GroupId",
|
|
column: x => x.GroupId,
|
|
principalTable: "Group",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_GroupUser_OrganizationUser_OrganizationUserId",
|
|
column: x => x.OrganizationUserId,
|
|
principalTable: "OrganizationUser",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_GroupUser_User_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "User",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "ProviderOrganizationProviderUser",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
ProviderOrganizationId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
ProviderUserId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
|
|
Type = table.Column<byte>(type: "tinyint unsigned", nullable: false),
|
|
Permissions = table.Column<string>(type: "longtext", nullable: true)
|
|
.Annotation("MySql:CharSet", "utf8mb4"),
|
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
|
RevisionDate = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_ProviderOrganizationProviderUser", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_ProviderOrganizationProviderUser_ProviderOrganization_Provid~",
|
|
column: x => x.ProviderOrganizationId,
|
|
principalTable: "ProviderOrganization",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_ProviderOrganizationProviderUser_ProviderUser_ProviderUserId",
|
|
column: x => x.ProviderUserId,
|
|
principalTable: "ProviderUser",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
})
|
|
.Annotation("MySql:CharSet", "utf8mb4");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Cipher_OrganizationId",
|
|
table: "Cipher",
|
|
column: "OrganizationId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Cipher_UserId",
|
|
table: "Cipher",
|
|
column: "UserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Collection_OrganizationId",
|
|
table: "Collection",
|
|
column: "OrganizationId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CollectionCipher_CipherId",
|
|
table: "CollectionCipher",
|
|
column: "CipherId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CollectionGroups_GroupId",
|
|
table: "CollectionGroups",
|
|
column: "GroupId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CollectionUsers_OrganizationUserId",
|
|
table: "CollectionUsers",
|
|
column: "OrganizationUserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CollectionUsers_UserId",
|
|
table: "CollectionUsers",
|
|
column: "UserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Device_UserId",
|
|
table: "Device",
|
|
column: "UserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_EmergencyAccess_GranteeId",
|
|
table: "EmergencyAccess",
|
|
column: "GranteeId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_EmergencyAccess_GrantorId",
|
|
table: "EmergencyAccess",
|
|
column: "GrantorId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Folder_UserId",
|
|
table: "Folder",
|
|
column: "UserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Group_OrganizationId",
|
|
table: "Group",
|
|
column: "OrganizationId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_GroupUser_OrganizationUserId",
|
|
table: "GroupUser",
|
|
column: "OrganizationUserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_GroupUser_UserId",
|
|
table: "GroupUser",
|
|
column: "UserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_OrganizationUser_OrganizationId",
|
|
table: "OrganizationUser",
|
|
column: "OrganizationId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_OrganizationUser_UserId",
|
|
table: "OrganizationUser",
|
|
column: "UserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Policy_OrganizationId",
|
|
table: "Policy",
|
|
column: "OrganizationId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_ProviderOrganization_OrganizationId",
|
|
table: "ProviderOrganization",
|
|
column: "OrganizationId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_ProviderOrganization_ProviderId",
|
|
table: "ProviderOrganization",
|
|
column: "ProviderId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_ProviderOrganizationProviderUser_ProviderOrganizationId",
|
|
table: "ProviderOrganizationProviderUser",
|
|
column: "ProviderOrganizationId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_ProviderOrganizationProviderUser_ProviderUserId",
|
|
table: "ProviderOrganizationProviderUser",
|
|
column: "ProviderUserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_ProviderUser_ProviderId",
|
|
table: "ProviderUser",
|
|
column: "ProviderId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_ProviderUser_UserId",
|
|
table: "ProviderUser",
|
|
column: "UserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Send_OrganizationId",
|
|
table: "Send",
|
|
column: "OrganizationId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Send_UserId",
|
|
table: "Send",
|
|
column: "UserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_SsoConfig_OrganizationId",
|
|
table: "SsoConfig",
|
|
column: "OrganizationId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_SsoUser_OrganizationId",
|
|
table: "SsoUser",
|
|
column: "OrganizationId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_SsoUser_UserId",
|
|
table: "SsoUser",
|
|
column: "UserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Transaction_OrganizationId",
|
|
table: "Transaction",
|
|
column: "OrganizationId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Transaction_UserId",
|
|
table: "Transaction",
|
|
column: "UserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_U2f_UserId",
|
|
table: "U2f",
|
|
column: "UserId");
|
|
}
|
|
|
|
protected override void Down(MigrationBuilder migrationBuilder)
|
|
{
|
|
migrationBuilder.DropTable(
|
|
name: "CollectionCipher");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "CollectionGroups");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "CollectionUsers");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Device");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "EmergencyAccess");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Event");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Folder");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Grant");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "GroupUser");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Installation");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Policy");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "ProviderOrganizationProviderUser");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Send");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "SsoConfig");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "SsoUser");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "TaxRate");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Transaction");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "U2f");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Cipher");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Collection");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Group");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "OrganizationUser");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "ProviderOrganization");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "ProviderUser");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Organization");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Provider");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "User");
|
|
}
|
|
}
|
|
}
|