diff options
Diffstat (limited to 'plugins/VNLib.Plugins.Essentials.Content.Routing/src')
4 files changed, 67 insertions, 5 deletions
diff --git a/plugins/VNLib.Plugins.Essentials.Content.Routing/src/Model/Route.cs b/plugins/VNLib.Plugins.Essentials.Content.Routing/src/Model/Route.cs index 8c52725..c1531f7 100644 --- a/plugins/VNLib.Plugins.Essentials.Content.Routing/src/Model/Route.cs +++ b/plugins/VNLib.Plugins.Essentials.Content.Routing/src/Model/Route.cs @@ -1,5 +1,5 @@ /* -* Copyright (c) 2022 Vaughn Nugent +* Copyright (c) 2023 Vaughn Nugent * * Library: VNLib * Package: VNLib.Plugins.Essentials.Content.Routing @@ -23,6 +23,7 @@ */ using System; +using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using Microsoft.EntityFrameworkCore; @@ -34,6 +35,7 @@ namespace VNLib.Plugins.Essentials.Content.Routing.Model [Index(nameof(Id), IsUnique = true)] internal class Route : DbModelBase { + [Key] public override string Id { get; set; } public override DateTime Created { get; set; } public override DateTime LastModified { get; set; } diff --git a/plugins/VNLib.Plugins.Essentials.Content.Routing/src/Model/RoutingContext.cs b/plugins/VNLib.Plugins.Essentials.Content.Routing/src/Model/RoutingContext.cs index 0cbd90f..4edb892 100644 --- a/plugins/VNLib.Plugins.Essentials.Content.Routing/src/Model/RoutingContext.cs +++ b/plugins/VNLib.Plugins.Essentials.Content.Routing/src/Model/RoutingContext.cs @@ -1,5 +1,5 @@ /* -* Copyright (c) 2022 Vaughn Nugent +* Copyright (c) 2023 Vaughn Nugent * * Library: VNLib * Package: VNLib.Plugins.Essentials.Content.Routing @@ -27,15 +27,64 @@ using System; using Microsoft.EntityFrameworkCore; using VNLib.Plugins.Extensions.Data; +using VNLib.Plugins.Extensions.Loading.Sql; namespace VNLib.Plugins.Essentials.Content.Routing.Model { - internal class RoutingContext : TransactionalDbContext + internal class RoutingContext : TransactionalDbContext, IDbTableDefinition { public DbSet<Route> Routes { get; set; } +#nullable disable + public RoutingContext(DbContextOptions options) :base(options) { } + + public RoutingContext() + {} + +#nullable enable + + public void OnDatabaseCreating(IDbContextBuilder builder, object? userState) + { + //Build the route table + + builder.DefineTable<Route>(nameof(Routes)) + .WithColumn(r => r.Id) + .MaxLength(50) + .Next() + + .WithColumn(r => r.Hostname) + .MaxLength(100) + .AllowNull(false) + .Next() + + .WithColumn(r => r.MatchPath) + .MaxLength(1000) + .AllowNull(false) + .Next() + + //Default to read-on + .WithColumn(r => r.Privilage) + .WithDefault(Accounts.AccountUtil.READ_MSK) + .AllowNull(false) + .Next() + + .WithColumn(r => r.Alternate) + .MaxLength(1000) + .Next() + + .WithColumn(r => (int)r.Routine) + .WithDefault(FpRoutine.Continue) + .Next() + + .WithColumn(r => r.Created) + .AllowNull(false) + .Next() + + .WithColumn(r => r.LastModified) + .AllowNull(false); + } } } diff --git a/plugins/VNLib.Plugins.Essentials.Content.Routing/src/PageRouterEntry.cs b/plugins/VNLib.Plugins.Essentials.Content.Routing/src/PageRouterEntry.cs index 0c04047..e71ee6b 100644 --- a/plugins/VNLib.Plugins.Essentials.Content.Routing/src/PageRouterEntry.cs +++ b/plugins/VNLib.Plugins.Essentials.Content.Routing/src/PageRouterEntry.cs @@ -23,12 +23,14 @@ */ using System; +using System.Threading.Tasks; using System.ComponentModel.Design; using VNLib.Utils.Logging; using VNLib.Plugins.Attributes; using VNLib.Plugins.Extensions.Loading; - +using VNLib.Plugins.Extensions.Loading.Sql; +using VNLib.Plugins.Essentials.Content.Routing.Model; namespace VNLib.Plugins.Essentials.Content.Routing { @@ -49,6 +51,10 @@ namespace VNLib.Plugins.Essentials.Content.Routing { //Init router PageRouter = this.GetOrCreateSingleton<Router>(); + + //Schedule the db creation + _ = this.ObserveWork(OnDbCreationAsync, 500); + Log.Information("Plugin loaded"); } @@ -65,5 +71,11 @@ namespace VNLib.Plugins.Essentials.Content.Routing Log.Information("Routing table reset"); } } + + private async Task OnDbCreationAsync() + { + //Create the router + await this.EnsureDbCreatedAsync<RoutingContext>(null); + } } } diff --git a/plugins/VNLib.Plugins.Essentials.Content.Routing/src/VNLib.Plugins.Essentials.Content.Routing.csproj b/plugins/VNLib.Plugins.Essentials.Content.Routing/src/VNLib.Plugins.Essentials.Content.Routing.csproj index c15e546..2d93897 100644 --- a/plugins/VNLib.Plugins.Essentials.Content.Routing/src/VNLib.Plugins.Essentials.Content.Routing.csproj +++ b/plugins/VNLib.Plugins.Essentials.Content.Routing/src/VNLib.Plugins.Essentials.Content.Routing.csproj @@ -43,7 +43,6 @@ </ItemGroup> <ItemGroup> - <ProjectReference Include="..\..\..\..\..\core\lib\Plugins.PluginBase\src\VNLib.Plugins.PluginBase.csproj" /> <ProjectReference Include="..\..\..\..\Extensions\lib\VNLib.Plugins.Extensions.Data\src\VNLib.Plugins.Extensions.Data.csproj" /> <ProjectReference Include="..\..\..\..\Extensions\lib\VNLib.Plugins.Extensions.Loading.Sql\src\VNLib.Plugins.Extensions.Loading.Sql.csproj" /> <ProjectReference Include="..\..\..\..\Extensions\lib\VNLib.Plugins.Extensions.Loading\src\VNLib.Plugins.Extensions.Loading.csproj" /> |