diff options
author | vman <public@vaughnnugent.com> | 2022-11-18 15:55:22 -0500 |
---|---|---|
committer | vman <public@vaughnnugent.com> | 2022-11-18 15:55:22 -0500 |
commit | c9e17b57a5ecdeea81674de5a033a201e7802526 (patch) | |
tree | 15c331af950441351507bb716e07dbe45452cd13 /Transactional Emails/Transactions/TransactionStore.cs | |
parent | 038d86a0381b39af94b66c9bdd3da1e31cd2d8f2 (diff) |
Initial commit
Diffstat (limited to 'Transactional Emails/Transactions/TransactionStore.cs')
-rw-r--r-- | Transactional Emails/Transactions/TransactionStore.cs | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Transactional Emails/Transactions/TransactionStore.cs b/Transactional Emails/Transactions/TransactionStore.cs new file mode 100644 index 0000000..9a700ae --- /dev/null +++ b/Transactional Emails/Transactions/TransactionStore.cs @@ -0,0 +1,50 @@ +using System; +using System.Linq; + +using Microsoft.EntityFrameworkCore; + +using VNLib.Plugins.Extensions.Data; + +namespace Emails.Transactional.Transactions +{ + + internal class TransactionStore : DbStore<EmailTransaction> + { + private readonly DbContextOptions Options; + + public TransactionStore(DbContextOptions options) + { + Options = options; + } + + public override TransactionalDbContext NewContext() => new EmailDbCtx(Options); + + public override string RecordIdBuilder => Guid.NewGuid().ToString("N"); + + protected override void OnRecordUpdate(EmailTransaction newRecord, EmailTransaction oldRecord) + { + oldRecord.LastModified = DateTime.UtcNow; + } + + protected override IQueryable<EmailTransaction> GetCollectionQueryBuilder(TransactionalDbContext context, params string[] constraints) + { + string userId = constraints[0]; + //Get the last transactions for the specifed user + EmailDbCtx ctx = context as EmailDbCtx; + return from trans in ctx.EmailTransactions + where trans.UserId == userId + orderby trans.LastModified descending + select trans; + } + + protected override IQueryable<EmailTransaction> GetSingleQueryBuilder(TransactionalDbContext context, params string[] constraints) + { + string transactionid = constraints[0]; + EmailDbCtx ctx = context as EmailDbCtx; + //Selet the exact transaction from its id + return from trans in ctx.EmailTransactions + where trans.Id == transactionid + select trans; + } + } +} |