diff options
Diffstat (limited to 'lib/Emails.Transactional.Plugin')
3 files changed, 83 insertions, 15 deletions
diff --git a/lib/Emails.Transactional.Plugin/src/EmailDbCtx.cs b/lib/Emails.Transactional.Plugin/src/EmailDbCtx.cs index cd865d8..82bf696 100644 --- a/lib/Emails.Transactional.Plugin/src/EmailDbCtx.cs +++ b/lib/Emails.Transactional.Plugin/src/EmailDbCtx.cs @@ -1,5 +1,5 @@ /* -* Copyright (c) 2022 Vaughn Nugent +* Copyright (c) 2023 Vaughn Nugent * * Library: VNLib * Package: Transactional Emails @@ -27,14 +27,81 @@ using System; using Microsoft.EntityFrameworkCore; using VNLib.Plugins.Extensions.Data; +using VNLib.Plugins.Extensions.Loading.Sql; namespace Emails.Transactional { - internal class EmailDbCtx : TransactionalDbContext + internal class EmailDbCtx : TransactionalDbContext, IDbTableDefinition { public DbSet<EmailTransaction> EmailTransactions { get; set; } public EmailDbCtx(DbContextOptions options) : base(options) {} + + public EmailDbCtx() + { } + + public void OnDatabaseCreating(IDbContextBuilder builder, object? userState) + { + //Define email tables + builder.DefineTable<EmailTransaction>(nameof(EmailTransactions)) + + //Start with id, its a primary key + .WithColumn(e => e.Id) + .MaxLength(50) + .Next() + + .WithColumn(e => e.Created) + .AllowNull(false) + .Next() + + .WithColumn(e => e.LastModified) + .AllowNull(false) + .Next() + + .WithColumn(e => e.UserId) + .MaxLength(100) + .Next() + + //To is allowed to be null + .WithColumn(e => e.To) + .MaxLength(1000) + .Next() + + .WithColumn(e => e.From) + .MaxLength(100) + .Next() + + .WithColumn(e => e.FromName) + .MaxLength(100) + .Next() + + .WithColumn(e => e.Subject) + .MaxLength(500) + .Next() + + .WithColumn(e => e.Ccs) + .MaxLength(1000) + .Next() + + .WithColumn(e => e.Bccs) + .MaxLength(1000) + .Next() + + .WithColumn(e => e.ReplyTo) + .MaxLength(100) + .Next() + + .WithColumn(e => e.ReplyToName) + .MaxLength(100) + .Next() + + .WithColumn(e => e.TemplateId) + .MaxLength(100) + .Next() + + .WithColumn(e => e.Result) + .MaxLength(200); + } } } diff --git a/lib/Emails.Transactional.Plugin/src/TEmailEntryPoint.cs b/lib/Emails.Transactional.Plugin/src/TEmailEntryPoint.cs index 8e7319a..42ba0ce 100644 --- a/lib/Emails.Transactional.Plugin/src/TEmailEntryPoint.cs +++ b/lib/Emails.Transactional.Plugin/src/TEmailEntryPoint.cs @@ -24,7 +24,6 @@ using System; using System.Threading.Tasks; -using System.Collections.Generic; using Emails.Transactional.Endpoints; @@ -33,6 +32,8 @@ using Minio.DataModel.Tracing; using VNLib.Utils.Logging; using VNLib.Plugins; +using VNLib.Plugins.Extensions.Loading; +using VNLib.Plugins.Extensions.Loading.Sql; using VNLib.Plugins.Extensions.Loading.Routing; namespace Emails.Transactional @@ -64,6 +65,9 @@ namespace Emails.Transactional //Route send oauth endpoint this.Route<SendEndpoint>(); + //Create databases + _ = this.ObserveWork(CreateDatabasesasync, 550); + Log.Information("Plugin loaded"); } @@ -77,5 +81,11 @@ namespace Emails.Transactional { throw new NotImplementedException(); } + + private async Task CreateDatabasesasync() + { + //Create the operation database + await this.EnsureDbCreatedAsync<EmailDbCtx>(this); + } } } diff --git a/lib/Emails.Transactional.Plugin/src/Transactional Emails.csproj b/lib/Emails.Transactional.Plugin/src/Transactional Emails.csproj index 0d628f8..db410b5 100644 --- a/lib/Emails.Transactional.Plugin/src/Transactional Emails.csproj +++ b/lib/Emails.Transactional.Plugin/src/Transactional Emails.csproj @@ -5,14 +5,15 @@ <RootNamespace>Emails.Transactional</RootNamespace> <AssemblyName>Emails.Transactional</AssemblyName> <Nullable>enable</Nullable> + <NeutralLanguage>en-US</NeutralLanguage> <!-- Resolve nuget dll files and store them in the output dir --> - <EnableDynamicLoading>true</EnableDynamicLoading> - + <EnableDynamicLoading>true</EnableDynamicLoading> </PropertyGroup> <PropertyGroup> <Authors>Vaughn Nugent</Authors> + <Company>Vaughn Nugent</Company> <Copyright>Copyright © 2023 Vaughn Nugent</Copyright> <Product>Emails.Transactional</Product> <PackageProjectUrl>https://www.vaughnnugent.com/resources/software/modules/Emails.Transactional</PackageProjectUrl> @@ -38,17 +39,7 @@ </ItemGroup> <ItemGroup> - <Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" /> - </ItemGroup> - - <ItemGroup> - <Folder Include="Endpoints\" /> - <Folder Include="Meta\" /> - </ItemGroup> - - <ItemGroup> <ProjectReference Include="..\..\..\..\..\core\lib\Plugins.Essentials\src\VNLib.Plugins.Essentials.csproj" /> - <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" /> |