Skip to content

Commit 0feeb28

Browse files
rikharinkjeremydmiller
authored andcommitted
always check if tenant id is filled before adding parameter to query
1 parent 510b8cf commit 0feeb28

File tree

2 files changed

+34
-34
lines changed

2 files changed

+34
-34
lines changed

src/EventSourcingTests/delete_single_event_stream.cs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,39 @@ public async Task delete_stream_by_guid_id_conjoined_tenancy()
7575
}
7676
}
7777

78+
[Fact]
79+
public async Task delete_stream_by_guid_id_conjoined_tenancy_with_no_tenant_id()
80+
{
81+
StoreOptions(opts => opts.Events.TenancyStyle = TenancyStyle.Conjoined);
82+
83+
var stream1 = Guid.NewGuid();
84+
var stream2 = Guid.NewGuid();
85+
86+
using (var session = theStore.LightweightSession())
87+
{
88+
var joined = new MembersJoined { Members = new[] { "Rand", "Matt", "Perrin", "Thom" } };
89+
var departed = new MembersDeparted { Members = new[] { "Thom" } };
90+
91+
session.Events.Append(stream1, joined, departed);
92+
93+
var joined2 = new MembersJoined { Members = new[] { "Rand", "Matt", "Perrin", "Thom" } };
94+
var departed2 = new MembersDeparted { Members = new[] { "Thom" } };
95+
96+
session.Events.Append(stream2, joined2, departed2);
97+
98+
await session.SaveChangesAsync();
99+
}
100+
101+
await theStore.Advanced.Clean.DeleteSingleEventStreamAsync(stream1);
102+
103+
using (var session = theStore.LightweightSession())
104+
{
105+
var events = session.Events.QueryAllRawEvents().ToList();
106+
events.All(x => x.StreamId == stream2)
107+
.ShouldBeTrue();
108+
}
109+
}
110+
78111
[Fact]
79112
public async Task delete_stream_by_guid_id_async()
80113
{

src/Marten/Storage/MartenDatabase.DocumentCleaner.cs

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -180,39 +180,6 @@ IF EXISTS(SELECT * FROM information_schema.tables
180180
";
181181
}
182182

183-
private void DeleteSingleEventStream<T>(T streamId, string? tenantId = null)
184-
{
185-
if (typeof(T) != Options.EventGraph.GetStreamIdType())
186-
{
187-
throw new ArgumentException(
188-
$"{nameof(streamId)} should be of type {Options.EventGraph.GetStreamIdType()}", nameof(streamId));
189-
}
190-
191-
using var conn = CreateConnection();
192-
var streamsWhere = "id = :id";
193-
var eventsWhere = "stream_id = :id";
194-
195-
if (Options.Events.TenancyStyle == TenancyStyle.Conjoined)
196-
{
197-
var tenantPart = " AND tenant_id = :tenantId";
198-
streamsWhere += tenantPart;
199-
eventsWhere += tenantPart;
200-
}
201-
202-
var cmd = conn.CreateCommand(
203-
$"delete from {Options.Events.DatabaseSchemaName}.mt_events where {eventsWhere};delete from {Options.Events.DatabaseSchemaName}.mt_streams where {streamsWhere}");
204-
cmd.AddNamedParameter("id", streamId);
205-
206-
if (Options.Events.TenancyStyle == TenancyStyle.Conjoined && tenantId.IsNotEmpty())
207-
{
208-
cmd.AddNamedParameter("tenantId", tenantId);
209-
}
210-
211-
conn.Open();
212-
213-
cmd.ExecuteNonQuery();
214-
}
215-
216183
private async Task DeleteSingleEventStreamAsync<T>(T streamId, string? tenantId = null,
217184
CancellationToken ct = default)
218185
{
@@ -226,7 +193,7 @@ private async Task DeleteSingleEventStreamAsync<T>(T streamId, string? tenantId
226193
var streamsWhere = "id = :id";
227194
var eventsWhere = "stream_id = :id";
228195

229-
if (Options.Events.TenancyStyle == TenancyStyle.Conjoined)
196+
if (Options.Events.TenancyStyle == TenancyStyle.Conjoined && tenantId.IsNotEmpty())
230197
{
231198
var tenantPart = " AND tenant_id = :tenantId";
232199
streamsWhere += tenantPart;

0 commit comments

Comments
 (0)