|
|
|
@ -6,6 +6,7 @@ |
|
|
|
|
|
|
|
using System; |
|
|
|
using System.ComponentModel; |
|
|
|
using JetBrains.Annotations; |
|
|
|
using Microsoft.EntityFrameworkCore; |
|
|
|
using Microsoft.EntityFrameworkCore.Metadata.Builders; |
|
|
|
using OpenIddict.EntityFrameworkCore.Models; |
|
|
|
@ -26,7 +27,7 @@ namespace OpenIddict.EntityFrameworkCore |
|
|
|
where TAuthorization : OpenIddictAuthorization<TKey, TApplication, TToken> |
|
|
|
where TKey : IEquatable<TKey> |
|
|
|
{ |
|
|
|
public void Configure(EntityTypeBuilder<TToken> builder) |
|
|
|
public void Configure([NotNull] EntityTypeBuilder<TToken> builder) |
|
|
|
{ |
|
|
|
if (builder == null) |
|
|
|
{ |
|
|
|
@ -37,23 +38,50 @@ namespace OpenIddict.EntityFrameworkCore |
|
|
|
// Entity Framework would throw an exception due to the TKey generic parameter
|
|
|
|
// being non-nullable when using value types like short, int, long or Guid.
|
|
|
|
|
|
|
|
|
|
|
|
// If primary/foreign keys are strings, limit their length to ensure
|
|
|
|
// they can be safely used in indexes, specially when the underlying
|
|
|
|
// provider is known to not restrict the default length (e.g MySQL).
|
|
|
|
if (typeof(TKey) == typeof(string)) |
|
|
|
{ |
|
|
|
builder.Property(nameof(OpenIddictToken.Application) + nameof(OpenIddictApplication.Id)) |
|
|
|
.HasMaxLength(50); |
|
|
|
|
|
|
|
builder.Property(nameof(OpenIddictToken.Authorization) + nameof(OpenIddictApplication.Id)) |
|
|
|
.HasMaxLength(50); |
|
|
|
|
|
|
|
builder.Property(token => token.Id) |
|
|
|
.HasMaxLength(50); |
|
|
|
} |
|
|
|
|
|
|
|
builder.HasKey(token => token.Id); |
|
|
|
|
|
|
|
builder.HasIndex(token => token.ReferenceId) |
|
|
|
.IsUnique(); |
|
|
|
|
|
|
|
builder.HasIndex("ApplicationId", |
|
|
|
builder.HasIndex( |
|
|
|
nameof(OpenIddictToken.Application) + nameof(OpenIddictApplication.Id), |
|
|
|
nameof(OpenIddictToken.Status), |
|
|
|
nameof(OpenIddictToken.Subject), |
|
|
|
nameof(OpenIddictToken.Type)); |
|
|
|
|
|
|
|
builder.Property(token => token.ConcurrencyToken) |
|
|
|
.HasMaxLength(50) |
|
|
|
.IsConcurrencyToken(); |
|
|
|
|
|
|
|
builder.Property(token => token.ReferenceId) |
|
|
|
.HasMaxLength(100); |
|
|
|
|
|
|
|
builder.Property(token => token.Status) |
|
|
|
.HasMaxLength(25) |
|
|
|
.IsRequired(); |
|
|
|
|
|
|
|
builder.Property(token => token.Subject) |
|
|
|
.HasMaxLength(450) |
|
|
|
.IsRequired(); |
|
|
|
|
|
|
|
builder.Property(token => token.Type) |
|
|
|
.HasMaxLength(25) |
|
|
|
.IsRequired(); |
|
|
|
|
|
|
|
builder.ToTable("OpenIddictTokens"); |
|
|
|
|