using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace Bit.PostgresMigrations.Migrations; public partial class SecretsManager : Migration { protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AddColumn( name: "UseSecretsManager", table: "Organization", type: "boolean", nullable: false, defaultValue: false); migrationBuilder.AlterColumn( name: "RequestIpAddress", table: "AuthRequest", type: "character varying(50)", maxLength: 50, nullable: true, oldClrType: typeof(string), oldType: "text", oldNullable: true); migrationBuilder.AlterColumn( name: "RequestDeviceIdentifier", table: "AuthRequest", type: "character varying(50)", maxLength: 50, nullable: true, oldClrType: typeof(string), oldType: "text", oldNullable: true); migrationBuilder.AlterColumn( name: "AccessCode", table: "AuthRequest", type: "character varying(25)", maxLength: 25, nullable: true, oldClrType: typeof(string), oldType: "text", oldNullable: true); migrationBuilder.CreateTable( name: "Project", columns: table => new { Id = table.Column(type: "uuid", nullable: false), OrganizationId = table.Column(type: "uuid", nullable: false), Name = table.Column(type: "text", nullable: true), CreationDate = table.Column(type: "timestamp with time zone", nullable: false), RevisionDate = table.Column(type: "timestamp with time zone", nullable: false), DeletedDate = table.Column(type: "timestamp with time zone", 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); }); migrationBuilder.CreateTable( name: "Secret", columns: table => new { Id = table.Column(type: "uuid", nullable: false), OrganizationId = table.Column(type: "uuid", nullable: false), Key = table.Column(type: "text", nullable: true), Value = table.Column(type: "text", nullable: true), Note = table.Column(type: "text", nullable: true), CreationDate = table.Column(type: "timestamp with time zone", nullable: false), RevisionDate = table.Column(type: "timestamp with time zone", nullable: false), DeletedDate = table.Column(type: "timestamp with time zone", 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); }); migrationBuilder.CreateTable( name: "ServiceAccount", columns: table => new { Id = table.Column(type: "uuid", nullable: false), OrganizationId = table.Column(type: "uuid", nullable: false), Name = table.Column(type: "text", nullable: true), CreationDate = table.Column(type: "timestamp with time zone", nullable: false), RevisionDate = table.Column(type: "timestamp with time zone", 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); }); migrationBuilder.CreateTable( name: "ProjectSecret", columns: table => new { ProjectsId = table.Column(type: "uuid", nullable: false), SecretsId = table.Column(type: "uuid", nullable: false) }, 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); }); migrationBuilder.CreateTable( name: "AccessPolicy", columns: table => new { Id = table.Column(type: "uuid", nullable: false), GroupId = table.Column(type: "uuid", nullable: true), GrantedProjectId = table.Column(type: "uuid", nullable: true), GrantedServiceAccountId = table.Column(type: "uuid", nullable: true), ServiceAccountId = table.Column(type: "uuid", nullable: true), OrganizationUserId = table.Column(type: "uuid", nullable: true), Read = table.Column(type: "boolean", nullable: false), Write = table.Column(type: "boolean", nullable: false), CreationDate = table.Column(type: "timestamp with time zone", nullable: false), RevisionDate = table.Column(type: "timestamp with time zone", nullable: false), Discriminator = table.Column(type: "text", nullable: false) }, 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"); }); migrationBuilder.CreateTable( name: "ApiKey", columns: table => new { Id = table.Column(type: "uuid", nullable: false), ServiceAccountId = table.Column(type: "uuid", nullable: true), Name = table.Column(type: "character varying(200)", maxLength: 200, nullable: true), ClientSecret = table.Column(type: "character varying(30)", maxLength: 30, nullable: true), Scope = table.Column(type: "character varying(4000)", maxLength: 4000, nullable: true), EncryptedPayload = table.Column(type: "character varying(4000)", maxLength: 4000, nullable: true), Key = table.Column(type: "text", nullable: true), ExpireAt = table.Column(type: "timestamp with time zone", nullable: true), CreationDate = table.Column(type: "timestamp with time zone", nullable: false), RevisionDate = table.Column(type: "timestamp with time zone", 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"); }); 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"); migrationBuilder.AlterColumn( name: "RequestIpAddress", table: "AuthRequest", type: "text", nullable: true, oldClrType: typeof(string), oldType: "character varying(50)", oldMaxLength: 50, oldNullable: true); migrationBuilder.AlterColumn( name: "RequestDeviceIdentifier", table: "AuthRequest", type: "text", nullable: true, oldClrType: typeof(string), oldType: "character varying(50)", oldMaxLength: 50, oldNullable: true); migrationBuilder.AlterColumn( name: "AccessCode", table: "AuthRequest", type: "text", nullable: true, oldClrType: typeof(string), oldType: "character varying(25)", oldMaxLength: 25, oldNullable: true); } }