From e5675b3ef2c688923e7c32e00fa55a5c3d4e233f Mon Sep 17 00:00:00 2001 From: vnugent Date: Thu, 13 Apr 2023 11:40:22 -0400 Subject: Extension updates with database creation --- .../src/Emails.Transactional.Client.csproj | 2 +- lib/Emails.Transactional.Plugin/src/EmailDbCtx.cs | 71 +++++++++++++++++++++- .../src/TEmailEntryPoint.cs | 12 +++- .../src/Transactional Emails.csproj | 15 +---- 4 files changed, 84 insertions(+), 16 deletions(-) diff --git a/lib/Emails.Transactional.Client/src/Emails.Transactional.Client.csproj b/lib/Emails.Transactional.Client/src/Emails.Transactional.Client.csproj index 7f16f20..c74bff3 100644 --- a/lib/Emails.Transactional.Client/src/Emails.Transactional.Client.csproj +++ b/lib/Emails.Transactional.Client/src/Emails.Transactional.Client.csproj @@ -39,7 +39,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + 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 EmailTransactions { get; set; } public EmailDbCtx(DbContextOptions options) : base(options) {} + + public EmailDbCtx() + { } + + public void OnDatabaseCreating(IDbContextBuilder builder, object? userState) + { + //Define email tables + builder.DefineTable(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(); + //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(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 @@ Emails.Transactional Emails.Transactional enable + en-US - true - + true Vaughn Nugent + Vaughn Nugent Copyright © 2023 Vaughn Nugent Emails.Transactional https://www.vaughnnugent.com/resources/software/modules/Emails.Transactional @@ -37,18 +38,8 @@ - - - - - - - - - - -- cgit