using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace Bit.MySqlMigrations.Migrations; public partial class SecretsManager : Migration { protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AddColumn( name: "UseSecretsManager", table: "Organization", type: "tinyint(1)", nullable: false, defaultValue: false); migrationBuilder.CreateTable( name: "Project", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), OrganizationId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Name = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false), DeletedDate = table.Column(type: "datetime(6)", nullable: true) }, constraints: table => { table.PrimaryKey("PK_Project", x => x.Id); table.ForeignKey( name: "FK_Project_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Secret", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), OrganizationId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Key = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Value = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Note = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false), DeletedDate = table.Column(type: "datetime(6)", nullable: true) }, constraints: table => { table.PrimaryKey("PK_Secret", x => x.Id); table.ForeignKey( name: "FK_Secret_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "ServiceAccount", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), OrganizationId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), Name = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_ServiceAccount", x => x.Id); table.ForeignKey( name: "FK_ServiceAccount_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "ProjectSecret", columns: table => new { ProjectsId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), SecretsId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci") }, constraints: table => { table.PrimaryKey("PK_ProjectSecret", x => new { x.ProjectsId, x.SecretsId }); table.ForeignKey( name: "FK_ProjectSecret_Project_ProjectsId", column: x => x.ProjectsId, principalTable: "Project", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_ProjectSecret_Secret_SecretsId", column: x => x.SecretsId, principalTable: "Secret", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "AccessPolicy", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), GroupId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), GrantedProjectId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), GrantedServiceAccountId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), ServiceAccountId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), OrganizationUserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), Read = table.Column(type: "tinyint(1)", nullable: false), Write = table.Column(type: "tinyint(1)", nullable: false), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false), Discriminator = table.Column(type: "longtext", nullable: false) .Annotation("MySql:CharSet", "utf8mb4") }, constraints: table => { table.PrimaryKey("PK_AccessPolicy", x => x.Id); table.ForeignKey( name: "FK_AccessPolicy_Group_GroupId", column: x => x.GroupId, principalTable: "Group", principalColumn: "Id"); table.ForeignKey( name: "FK_AccessPolicy_OrganizationUser_OrganizationUserId", column: x => x.OrganizationUserId, principalTable: "OrganizationUser", principalColumn: "Id"); table.ForeignKey( name: "FK_AccessPolicy_Project_GrantedProjectId", column: x => x.GrantedProjectId, principalTable: "Project", principalColumn: "Id"); table.ForeignKey( name: "FK_AccessPolicy_ServiceAccount_GrantedServiceAccountId", column: x => x.GrantedServiceAccountId, principalTable: "ServiceAccount", principalColumn: "Id"); table.ForeignKey( name: "FK_AccessPolicy_ServiceAccount_ServiceAccountId", column: x => x.ServiceAccountId, principalTable: "ServiceAccount", principalColumn: "Id"); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "ApiKey", columns: table => new { Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), ServiceAccountId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), Name = table.Column(type: "varchar(200)", maxLength: 200, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), ClientSecret = table.Column(type: "varchar(30)", maxLength: 30, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Scope = table.Column(type: "varchar(4000)", maxLength: 4000, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), EncryptedPayload = table.Column(type: "varchar(4000)", maxLength: 4000, nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), Key = table.Column(type: "longtext", nullable: true) .Annotation("MySql:CharSet", "utf8mb4"), ExpireAt = table.Column(type: "datetime(6)", nullable: true), CreationDate = table.Column(type: "datetime(6)", nullable: false), RevisionDate = table.Column(type: "datetime(6)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_ApiKey", x => x.Id); table.ForeignKey( name: "FK_ApiKey_ServiceAccount_ServiceAccountId", column: x => x.ServiceAccountId, principalTable: "ServiceAccount", principalColumn: "Id"); }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateIndex( name: "IX_AccessPolicy_GrantedProjectId", table: "AccessPolicy", column: "GrantedProjectId"); migrationBuilder.CreateIndex( name: "IX_AccessPolicy_GrantedServiceAccountId", table: "AccessPolicy", column: "GrantedServiceAccountId"); migrationBuilder.CreateIndex( name: "IX_AccessPolicy_GroupId", table: "AccessPolicy", column: "GroupId"); migrationBuilder.CreateIndex( name: "IX_AccessPolicy_OrganizationUserId", table: "AccessPolicy", column: "OrganizationUserId"); migrationBuilder.CreateIndex( name: "IX_AccessPolicy_ServiceAccountId", table: "AccessPolicy", column: "ServiceAccountId"); migrationBuilder.CreateIndex( name: "IX_ApiKey_ServiceAccountId", table: "ApiKey", column: "ServiceAccountId"); migrationBuilder.CreateIndex( name: "IX_Project_DeletedDate", table: "Project", column: "DeletedDate"); migrationBuilder.CreateIndex( name: "IX_Project_OrganizationId", table: "Project", column: "OrganizationId"); migrationBuilder.CreateIndex( name: "IX_ProjectSecret_SecretsId", table: "ProjectSecret", column: "SecretsId"); migrationBuilder.CreateIndex( name: "IX_Secret_DeletedDate", table: "Secret", column: "DeletedDate"); migrationBuilder.CreateIndex( name: "IX_Secret_OrganizationId", table: "Secret", column: "OrganizationId"); migrationBuilder.CreateIndex( name: "IX_ServiceAccount_OrganizationId", table: "ServiceAccount", column: "OrganizationId"); } protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "AccessPolicy"); migrationBuilder.DropTable( name: "ApiKey"); migrationBuilder.DropTable( name: "ProjectSecret"); migrationBuilder.DropTable( name: "ServiceAccount"); migrationBuilder.DropTable( name: "Project"); migrationBuilder.DropTable( name: "Secret"); migrationBuilder.DropColumn( name: "UseSecretsManager", table: "Organization"); } }