aboutsummaryrefslogtreecommitdiff
path: root/Transactional Emails/Transactions/TransactionStore.cs
diff options
context:
space:
mode:
authorLibravatar vman <public@vaughnnugent.com>2022-11-18 15:55:22 -0500
committerLibravatar vman <public@vaughnnugent.com>2022-11-18 15:55:22 -0500
commitc9e17b57a5ecdeea81674de5a033a201e7802526 (patch)
tree15c331af950441351507bb716e07dbe45452cd13 /Transactional Emails/Transactions/TransactionStore.cs
parent038d86a0381b39af94b66c9bdd3da1e31cd2d8f2 (diff)
Initial commit
Diffstat (limited to 'Transactional Emails/Transactions/TransactionStore.cs')
-rw-r--r--Transactional Emails/Transactions/TransactionStore.cs50
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;
+ }
+ }
+}