From 9daff7ace0281d9710adb10dfcfd4afb1c67de62 Mon Sep 17 00:00:00 2001 From: jay-zahiri <11631617+jay-zahiri@users.noreply.github.com> Date: Wed, 4 Dec 2024 13:39:58 +0100 Subject: [PATCH] Restore MartenOps.Store and added MartenOps.StoreMany --- src/Persistence/Wolverine.Marten/IMartenOp.cs | 52 +++++++++++++++++-- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/src/Persistence/Wolverine.Marten/IMartenOp.cs b/src/Persistence/Wolverine.Marten/IMartenOp.cs index b5069841..c88eaa5f 100644 --- a/src/Persistence/Wolverine.Marten/IMartenOp.cs +++ b/src/Persistence/Wolverine.Marten/IMartenOp.cs @@ -24,18 +24,35 @@ public static class MartenOps /// /// Return a side effect of storing the specified document in Marten /// + /// + /// + /// + /// + public static StoreDoc Store(T document) where T : notnull + { + if (document == null) + { + throw new ArgumentNullException(nameof(document)); + } + + return new StoreDoc(document); + } + + /// + /// Return a side effect of storing many documents of a specific document type in Marten + /// /// /// /// /// - public static StoreDoc Store(params T[] documents) where T : notnull + public static StoreManyDocs StoreMany(params T[] documents) where T : notnull { if (documents == null) { throw new ArgumentNullException(nameof(documents)); } - return new StoreDoc(documents); + return new StoreManyDocs(documents); } /// @@ -225,10 +242,25 @@ public void Execute(IDocumentSession session) } public class StoreDoc : DocumentOp where T : notnull +{ + private readonly T _document; + + public StoreDoc(T document) : base(document) + { + _document = document; + } + + public override void Execute(IDocumentSession session) + { + session.Store(_document); + } +} + +public class StoreManyDocs : DocumentsOp where T : notnull { private readonly T[] _documents; - public StoreDoc(params T[] documents) : base(documents) + public StoreManyDocs(T[] documents) : base(documents) { _documents = documents; } @@ -285,10 +317,22 @@ public override void Execute(IDocumentSession session) } public abstract class DocumentOp : IMartenOp +{ + public object Document { get; } + + protected DocumentOp(object document) + { + Document = document; + } + + public abstract void Execute(IDocumentSession session); +} + +public abstract class DocumentsOp : IMartenOp { public object[] Documents { get; } - protected DocumentOp(params object[] documents) + protected DocumentsOp(params object[] documents) { Documents = documents; }