Skip to content

Commit

Permalink
Cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
SebastianStehle authored Jan 15, 2025
1 parent d65ce1f commit 6691920
Show file tree
Hide file tree
Showing 11 changed files with 259 additions and 57 deletions.
8 changes: 7 additions & 1 deletion .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
name: Nuget Build

on: [push, pull_request]
on:
push:
branches:
- 'main'
pull_request:
branches:
- 'main'

jobs:
build:
Expand Down
14 changes: 12 additions & 2 deletions events/Squidex.Events.EntityFramework/EFEventStore_Writer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,18 @@ public async Task AppendAsync(Guid commitId, string streamName, long expectedVer

try
{
commit.Position = await adapter.GetPositionAsync(context, ct);
await context.SaveChangesAsync(ct);
await using var transaction = await context.Database.BeginTransactionAsync(ct);
try
{
commit.Position = await adapter.GetPositionAsync(context, ct);
await context.SaveChangesAsync(ct);
await transaction.CommitAsync(ct);
}
catch (Exception)
{
await transaction.RollbackAsync(ct);
throw;
}
}
catch
{
Expand Down
13 changes: 9 additions & 4 deletions events/Squidex.Events.GetEventStore/GetEventStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,14 @@ public async IAsyncEnumerable<StoredEvent> QueryAllReverseAsync(StreamFilter fil
}

var streamName = await projectionClient.CreateProjectionAsync(filter, true, ct);
var streamEvents = QueryReverseAsync(streamName, ESStreamPosition.End, take, ct);
var streamEvents = QueryReverseAsync(streamName, take, ct);

await foreach (var storedEvent in streamEvents.IgnoreNotFound(ct).TakeWhile(x => x.Data.Headers.Timestamp() >= timestamp).WithCancellation(ct))
var query = streamEvents
.IgnoreNotFound(ct)
.TakeWhile(x => x.Data.Headers.Timestamp() >= timestamp)
.Take(take);

await foreach (var storedEvent in query.WithCancellation(ct))
{
yield return storedEvent;
}
Expand Down Expand Up @@ -110,13 +115,13 @@ private IAsyncEnumerable<StoredEvent> QueryAsync(string streamName, ESStreamPosi
return result.Select(x => Formatter.Read(x, options.Value.Prefix));
}

private IAsyncEnumerable<StoredEvent> QueryReverseAsync(string streamName, ESStreamPosition start, long count,
private IAsyncEnumerable<StoredEvent> QueryReverseAsync(string streamName, long count,
CancellationToken ct = default)
{
var result = client.ReadStreamAsync(
Direction.Backwards,
streamName,
start,
ESStreamPosition.End,
count,
true,
cancellationToken: ct);
Expand Down
133 changes: 133 additions & 0 deletions events/Squidex.Events.Tests/EnvelopeHeadersTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================

using FakeItEasy;
using MongoDB.Bson.Serialization;
using Squidex.Events.Mongo;
using Xunit;
Expand All @@ -18,6 +19,138 @@ static EnvelopeHeadersTests()
BsonSerializer.TryRegisterSerializer(new HeaderValueSerializer());
}

[Fact]
public void Should_get_long()
{
var headers = new EnvelopeHeaders
{
["long"] = 42
};

var result = headers.GetLong("long");
Assert.Equal(42, result);
}

[Fact]
public void Should_get_long_from_empty_key()
{
var headers = new EnvelopeHeaders
{
};

var result = headers.GetLong("long");
Assert.Equal(0, result);
}

[Theory]
[InlineData("9", 9)]
[InlineData("A", 0)]
[InlineData(" ", 0)]
public void Should_get_long_from_string(string source, long expected)
{
var headers = new EnvelopeHeaders
{
["long"] = source
};

var result = headers.GetLong("long");
Assert.Equal(expected, result);
}

[Fact]
public void Should_get_string()
{
var headers = new EnvelopeHeaders
{
["string"] = "Hello"
};

var result = headers.GetString("string");
Assert.Equal("Hello", result);
}

[Fact]
public void Should_get_string_from_empty_key()
{
var headers = new EnvelopeHeaders
{
};

var result = headers.GetString("string");
Assert.Equal(string.Empty, result);
}

[Fact]
public void Should_get_string_from_long()
{
var headers = new EnvelopeHeaders
{
["string"] = 42
};

var result = headers.GetString("string");
Assert.Equal("42", result);
}

[Fact]
public void Should_get_string_from_bool()
{
var headers = new EnvelopeHeaders
{
["string"] = true
};

var result = headers.GetString("string");
Assert.Equal("true", result);
}

[Fact]
public void Should_get_boolean()
{
var headers = new EnvelopeHeaders
{
["bool"] = true
};

var result = headers.GetBoolean("bool");
Assert.True(result);
}

[Fact]
public void Should_get_boolean_from_empty_key()
{
var headers = new EnvelopeHeaders
{
};

var result = headers.GetBoolean("bool");
Assert.False(result);
}

[Fact]
public void Should_get_datetime()
{
var headers = new EnvelopeHeaders
{
["date"] = "2023-12-11T10:09:08z"
};

var result = headers.GetDateTime("date");
Assert.Equal(new DateTime(2023, 12, 11, 10, 9, 8, DateTimeKind.Utc), result);
}

[Fact]
public void Should_get_datetime_with_millis()
{
var headers = new EnvelopeHeaders
{
["date"] = "2023-12-11T10:09:08.765z"
};

var result = headers.GetDateTime("date");
Assert.Equal(new DateTime(2023, 12, 11, 10, 9, 8, 765, DateTimeKind.Utc), result);
}

[Fact]
public void Should_create_headers()
{
Expand Down
Loading

0 comments on commit 6691920

Please sign in to comment.