You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
282 lines
12 KiB
282 lines
12 KiB
using Microsoft.EntityFrameworkCore.Migrations; |
|
|
|
#nullable disable |
|
|
|
namespace Bit.MySqlMigrations.Migrations; |
|
|
|
public partial class SecretsManager : Migration |
|
{ |
|
protected override void Up(MigrationBuilder migrationBuilder) |
|
{ |
|
migrationBuilder.AddColumn<bool>( |
|
name: "UseSecretsManager", |
|
table: "Organization", |
|
type: "tinyint(1)", |
|
nullable: false, |
|
defaultValue: false); |
|
|
|
migrationBuilder.CreateTable( |
|
name: "Project", |
|
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"), |
|
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) |
|
}, |
|
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<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"), |
|
Value = table.Column<string>(type: "longtext", nullable: true) |
|
.Annotation("MySql:CharSet", "utf8mb4"), |
|
Note = 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) |
|
}, |
|
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<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"), |
|
CreationDate = table.Column<DateTime>(type: "datetime(6)", nullable: false), |
|
RevisionDate = table.Column<DateTime>(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<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
|
SecretsId = table.Column<Guid>(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<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
|
GroupId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
|
GrantedProjectId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
|
GrantedServiceAccountId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
|
ServiceAccountId = 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"), |
|
Read = table.Column<bool>(type: "tinyint(1)", nullable: false), |
|
Write = 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), |
|
Discriminator = table.Column<string>(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<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
|
ServiceAccountId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
|
Name = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: true) |
|
.Annotation("MySql:CharSet", "utf8mb4"), |
|
ClientSecret = table.Column<string>(type: "varchar(30)", maxLength: 30, nullable: true) |
|
.Annotation("MySql:CharSet", "utf8mb4"), |
|
Scope = table.Column<string>(type: "varchar(4000)", maxLength: 4000, nullable: true) |
|
.Annotation("MySql:CharSet", "utf8mb4"), |
|
EncryptedPayload = table.Column<string>(type: "varchar(4000)", maxLength: 4000, nullable: true) |
|
.Annotation("MySql:CharSet", "utf8mb4"), |
|
Key = table.Column<string>(type: "longtext", nullable: true) |
|
.Annotation("MySql:CharSet", "utf8mb4"), |
|
ExpireAt = 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_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"); |
|
} |
|
}
|
|
|