using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace Microsoft.SelfService.Portal.Core.API.Migrations { /// public partial class AddApiTokenManagement : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "ApiTokens", columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false, defaultValueSql: "NEWID()"), Jti = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), Subject = table.Column(type: "nvarchar(450)", nullable: false), SubjectType = table.Column(type: "nvarchar(32)", maxLength: 32, nullable: false), ApiClientId = table.Column(type: "uniqueidentifier", nullable: true), Name = table.Column(type: "nvarchar(max)", nullable: false), ScopesJson = table.Column(type: "nvarchar(max)", nullable: false), IssuedAt = table.Column(type: "datetime2", nullable: false), ExpiresAt = table.Column(type: "datetime2", nullable: false), RevokedAt = table.Column(type: "datetime2", nullable: true), RevokedBy = table.Column(type: "nvarchar(max)", nullable: true), LastUsedAt = table.Column(type: "datetime2", nullable: true), Modified = table.Column(type: "datetime2", nullable: false, defaultValueSql: "GETDATE()"), ModifiedBy = table.Column(type: "nvarchar(max)", nullable: false), Created = table.Column(type: "datetime2", nullable: false, defaultValueSql: "GETDATE()"), CreatedBy = table.Column(type: "nvarchar(max)", nullable: false) }, constraints: table => { table.PrimaryKey("PK_ApiTokens", x => x.Id); table.CheckConstraint("CK_ApiTokens_ScopesJson_IsJson", "ISJSON([ScopesJson]) = 1"); table.ForeignKey( name: "FK_ApiTokens_ApiClients_ApiClientId", column: x => x.ApiClientId, principalTable: "ApiClients", principalColumn: "Id", onDelete: ReferentialAction.SetNull); }); migrationBuilder.CreateIndex( name: "IX_ApiTokens_ApiClientId", table: "ApiTokens", column: "ApiClientId"); migrationBuilder.CreateIndex( name: "IX_ApiTokens_Jti", table: "ApiTokens", column: "Jti", unique: true); migrationBuilder.CreateIndex( name: "IX_ApiTokens_SubjectType_Subject", table: "ApiTokens", columns: new[] { "SubjectType", "Subject" }); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "ApiTokens"); } } }