add AspNetUserPasskeys migration

This commit is contained in:
sbwalker
2025-10-20 12:19:17 -04:00
parent abc4905a14
commit 970f6b400f
3 changed files with 88 additions and 0 deletions

View File

@ -0,0 +1,39 @@
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Migrations.Operations;
using Microsoft.EntityFrameworkCore.Migrations.Operations.Builders;
using Oqtane.Databases.Interfaces;
// ReSharper disable MemberCanBePrivate.Global
// ReSharper disable UnusedAutoPropertyAccessor.Global
namespace Oqtane.Migrations.EntityBuilders
{
public class AspNetUserPasskeysEntityBuilder : BaseEntityBuilder<AspNetUserPasskeysEntityBuilder>
{
private const string _entityTableName = "AspNetUserPasskeys";
private readonly PrimaryKey<AspNetUserPasskeysEntityBuilder> _primaryKey = new("PK_AspNetUserPasskeys", x => x.CredentialId);
private readonly ForeignKey<AspNetUserPasskeysEntityBuilder> _aspNetUsersForeignKey = new("FK_AspNetUserPasskeys_AspNetUsers_UserId", x => x.UserId, "AspNetUsers", "Id", ReferentialAction.Cascade);
public AspNetUserPasskeysEntityBuilder(MigrationBuilder migrationBuilder, IDatabase database) : base(migrationBuilder, database)
{
EntityTableName = _entityTableName;
PrimaryKey = _primaryKey;
ForeignKeys.Add(_aspNetUsersForeignKey);
}
protected override AspNetUserPasskeysEntityBuilder BuildTable(ColumnsBuilder table)
{
CredentialId = AddBinaryColumn(table, "CredentialId", 1024);
UserId = AddStringColumn(table, "UserId", 450);
Data = AddMaxStringColumn(table, "Data");
return this;
}
public OperationBuilder<AddColumnOperation> CredentialId { get; set; }
public OperationBuilder<AddColumnOperation> UserId { get; set; }
public OperationBuilder<AddColumnOperation> Data { get; set; }
}
}

View File

@ -299,6 +299,27 @@ namespace Oqtane.Migrations.EntityBuilders
return table.Column<Guid>(name: RewriteName(name), nullable: nullable, defaultValue: defaultValue);
}
// binary
public void AddBinaryColumn(string name, int length, bool nullable = false, bool unicode = true)
{
_migrationBuilder.AddColumn<byte[]>(RewriteName(name), RewriteName(EntityTableName), maxLength: length, nullable: nullable, unicode: unicode, schema: Schema);
}
public void AddBinaryColumn(string name, int length, bool nullable, bool unicode, string defaultValue)
{
_migrationBuilder.AddColumn<byte[]>(RewriteName(name), RewriteName(EntityTableName), maxLength: length, nullable: nullable, unicode: unicode, defaultValue: defaultValue, schema: Schema);
}
protected OperationBuilder<AddColumnOperation> AddBinaryColumn(ColumnsBuilder table, string name, int length, bool nullable = false, bool unicode = true)
{
return table.Column<byte[]>(name: RewriteName(name), maxLength: length, nullable: nullable, unicode: unicode);
}
protected OperationBuilder<AddColumnOperation> AddBinaryColumn(ColumnsBuilder table, string name, int length, bool nullable, bool unicode, string defaultValue)
{
return table.Column<byte[]>(name: RewriteName(name), maxLength: length, nullable: nullable, unicode: unicode, defaultValue: defaultValue);
}
// alter string
public void AlterStringColumn(string name, int length, bool nullable = false, bool unicode = true, string index = "")
{

View File

@ -0,0 +1,28 @@
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Oqtane.Databases.Interfaces;
using Oqtane.Migrations.EntityBuilders;
using Oqtane.Repository;
namespace Oqtane.Migrations.Tenant
{
[DbContext(typeof(TenantDBContext))]
[Migration("Tenant.10.00.00.01")]
public class AddAspNetUserPasskeys : MultiDatabaseMigration
{
public AddAspNetUserPasskeys(IDatabase database) : base(database)
{
}
protected override void Up(MigrationBuilder migrationBuilder)
{
var aspNetUserPasskeysEntityBuilder = new AspNetUserPasskeysEntityBuilder(migrationBuilder, ActiveDatabase);
aspNetUserPasskeysEntityBuilder.Create();
}
protected override void Down(MigrationBuilder migrationBuilder)
{
// not implemented
}
}
}