aboutsummaryrefslogtreecommitdiff
path: root/plugins/VNLib.Plugins.Essentials.Accounts.Registration/src
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/VNLib.Plugins.Essentials.Accounts.Registration/src')
-rw-r--r--plugins/VNLib.Plugins.Essentials.Accounts.Registration/src/RegistrationContext.cs22
-rw-r--r--plugins/VNLib.Plugins.Essentials.Accounts.Registration/src/RegistrationEntryPoint.cs10
-rw-r--r--plugins/VNLib.Plugins.Essentials.Accounts.Registration/src/VNLib.Plugins.Essentials.Accounts.Registration.csproj2
3 files changed, 31 insertions, 3 deletions
diff --git a/plugins/VNLib.Plugins.Essentials.Accounts.Registration/src/RegistrationContext.cs b/plugins/VNLib.Plugins.Essentials.Accounts.Registration/src/RegistrationContext.cs
index 611e30e..3b50303 100644
--- a/plugins/VNLib.Plugins.Essentials.Accounts.Registration/src/RegistrationContext.cs
+++ b/plugins/VNLib.Plugins.Essentials.Accounts.Registration/src/RegistrationContext.cs
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2022 Vaughn Nugent
+* Copyright (c) 2023 Vaughn Nugent
*
* Library: VNLib
* Package: VNLib.Plugins.Essentials.Accounts.Registration
@@ -25,15 +25,33 @@
using Microsoft.EntityFrameworkCore;
using VNLib.Plugins.Extensions.Data;
+using VNLib.Plugins.Extensions.Loading.Sql;
using VNLib.Plugins.Essentials.Accounts.Registration.TokenRevocation;
namespace VNLib.Plugins.Essentials.Accounts.Registration
{
- internal class RegistrationContext : TransactionalDbContext
+ internal class RegistrationContext : TransactionalDbContext, IDbTableDefinition
{
public DbSet<RevokedToken> RevokedRegistrationTokens { get; set; }
public RegistrationContext(DbContextOptions options) : base(options)
{}
+
+ public RegistrationContext()
+ {}
+
+ public void OnDatabaseCreating(IDbContextBuilder builder, object? state)
+ {
+ //Define a table for the revoked tokens
+ builder.DefineTable<RevokedToken>(nameof(RevokedRegistrationTokens))
+ //Define the token column and the created column, let the framework determine the data-types
+ .WithColumn(p => p.Token)
+ .MaxLength(200)
+ .Next()
+
+ //Define the next column
+ .WithColumn(p => p.Created)
+ .AllowNull(false);
+ }
}
} \ No newline at end of file
diff --git a/plugins/VNLib.Plugins.Essentials.Accounts.Registration/src/RegistrationEntryPoint.cs b/plugins/VNLib.Plugins.Essentials.Accounts.Registration/src/RegistrationEntryPoint.cs
index bceb5e1..790a2c6 100644
--- a/plugins/VNLib.Plugins.Essentials.Accounts.Registration/src/RegistrationEntryPoint.cs
+++ b/plugins/VNLib.Plugins.Essentials.Accounts.Registration/src/RegistrationEntryPoint.cs
@@ -25,6 +25,7 @@
using VNLib.Utils.Logging;
using VNLib.Plugins.Extensions.Loading;
+using VNLib.Plugins.Extensions.Loading.Sql;
using VNLib.Plugins.Extensions.Loading.Routing;
using VNLib.Plugins.Essentials.Accounts.Registration.Endpoints;
@@ -39,8 +40,17 @@ namespace VNLib.Plugins.Essentials.Accounts.Registration
//Route reg endpoint
this.Route<RegistrationEntpoint>();
+ //Schedule creating database tables
+ _ = this.ObserveWork(CreateDatabaseTables, 1000);
+
Log.Information("Plugin loaded");
}
+
+ private async Task CreateDatabaseTables()
+ {
+ //Ensure the database is created
+ await this.EnsureDbCreatedAsync<RegistrationContext>(this);
+ }
protected override void OnUnLoad()
{
diff --git a/plugins/VNLib.Plugins.Essentials.Accounts.Registration/src/VNLib.Plugins.Essentials.Accounts.Registration.csproj b/plugins/VNLib.Plugins.Essentials.Accounts.Registration/src/VNLib.Plugins.Essentials.Accounts.Registration.csproj
index 5b8edc5..5b254d3 100644
--- a/plugins/VNLib.Plugins.Essentials.Accounts.Registration/src/VNLib.Plugins.Essentials.Accounts.Registration.csproj
+++ b/plugins/VNLib.Plugins.Essentials.Accounts.Registration/src/VNLib.Plugins.Essentials.Accounts.Registration.csproj
@@ -34,7 +34,7 @@
<Deterministic>False</Deterministic>
</PropertyGroup>
<ItemGroup>
- <PackageReference Include="FluentValidation" Version="11.5.1" />
+ <PackageReference Include="FluentValidation" Version="11.5.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\..\core\lib\Plugins.Essentials\src\VNLib.Plugins.Essentials.csproj" />