added two samples

This commit is contained in:
2026-02-03 08:31:53 -05:00
parent 97e0ce1733
commit 51f577d218
1120 changed files with 45859 additions and 0 deletions

View File

@@ -0,0 +1,15 @@
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/contentModel.xml
/modules.xml
/projectSettingsUpdater.xml
/.idea.WolverineAndNats.iml
# Ignored default folder with query files
/queries/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AgentMigrationStateService">
<option name="migrationStatus" value="COMPLETED" />
</component>
</project>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Ask2AgentMigrationStateService">
<option name="migrationStatus" value="COMPLETED" />
</component>
</project>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="pg" uuid="ce1a7cb8-729e-46fe-9898-8bf0c03ad5cf">
<driver-ref>postgresql</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>org.postgresql.Driver</jdbc-driver>
<jdbc-url>jdbc:postgresql://localhost:51238/?password=v0%7Ew8n1%7BE%29KYsw-1*3st0R&amp;user=postgres</jdbc-url>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
<data-source source="LOCAL" name="pg" uuid="567fbbf8-b474-4c51-b1d6-afcfe5c05a76">
<driver-ref>postgresql</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>org.postgresql.Driver</jdbc-driver>
<jdbc-url>jdbc:postgresql://localhost:54454/?password=v0%7Ew8n1%7BE%29KYsw-1*3st0R&amp;user=postgres</jdbc-url>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="db-tree-configuration">
<option name="data" value="----------------------------------------&#10;1:0:ce1a7cb8-729e-46fe-9898-8bf0c03ad5cf&#10;2:0:567fbbf8-b474-4c51-b1d6-afcfe5c05a76&#10;" />
</component>
</project>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
</project>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
<mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />
</component>
</project>

View File

@@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Messages\Messages.csproj" />
<ProjectReference Include="..\ServiceDefaults\ServiceDefaults.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Aspire.Npgsql" Version="13.1.0" />
<PackageReference Include="WolverineFx.Marten" Version="5.13.0" />
<PackageReference Include="WolverineFx.Nats" Version="5.13.0" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,44 @@
using Messages;
using Wolverine;
namespace ApiOne.Endpoints;
public static class Extensions
{
extension(IEndpointRouteBuilder endpoints)
{
public IEndpointRouteBuilder MapApiOneEndpoints()
{
endpoints.MapPost("/messages", async (SendMessage request, IMessageBus messageBus) =>
{
await messageBus.PublishAsync(request);
return Results.Accepted();
});
endpoints.MapPost("/math", async (AddThem request, IMessageBus bus) =>
{
var result = await bus.InvokeAsync<NumbersAdded>(request);
return Results.Ok(result);
});
endpoints.MapPost("/users", async (UserCreate user, IMessageBus bus) =>
{
var doc = new UserDocument(Guid.NewGuid(), user.Name);
await bus.PublishAsync(doc);
return Results.Accepted();
});
endpoints.MapPut("/users/{id:guid}/name", async (Guid id, UserCreate user, IMessageBus bus) =>
{
var nameChanged = new UserNameChanged(id, user.Name);
await bus.PublishAsync(nameChanged);
return Results.Accepted();
});
return endpoints;
}
}
}
public record UserCreate(string Name);

View File

@@ -0,0 +1,56 @@
using ApiOne.Endpoints;
using Marten;
using Messages;
using Wolverine;
using Wolverine.Marten;
using Wolverine.Nats;
var builder = WebApplication.CreateBuilder(args);
builder.AddServiceDefaults();
builder.AddNpgsqlDataSource("db-one");
builder.UseWolverine(options =>
{
options.UseNats(builder.Configuration.GetConnectionString("nats") ??
throw new Exception("No NATS connection string configured"))
.AutoProvision()
.UseJetStream(js =>
{
js.MaxDeliver = 5;
js.AckWait = TimeSpan.FromSeconds(30);
})
.DefineStream("PEOPLE", stream =>
stream.WithSubject("people.>")
.WithLimits(maxMessages: 5_000, maxAge: TimeSpan.FromDays(5))
//.WithReplicas(3)
.EnableScheduledDelivery());
options.PublishMessage<SendMessage>()
.ToNatsSubject("messages-sent");
options.PublishMessage<UserDocument>()
.ToNatsSubject("people.created");
options.PublishMessage<UserNameChanged>()
.ToNatsSubject("people.name-changed");
options.PublishMessage<AddThem>()
.ToNatsSubject("math.add");
});
builder.Services.AddMarten(config =>
{
}).UseLightweightSessions()
.IntegrateWithWolverine()
.UseNpgsqlDataSource();
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.MapApiOneEndpoints();
app.MapDefaultEndpoints();
app.Run();

View File

@@ -0,0 +1,15 @@
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"profiles": {
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false,
"applicationUrl": "https://apione.dev.localhost:7131",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}

View File

@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}

View File

@@ -0,0 +1,10 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"Npgsql": "Warning"
}
},
"AllowedHosts": "*"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,19 @@
{
"runtimeOptions": {
"tfm": "net10.0",
"frameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "10.0.0"
},
{
"name": "Microsoft.AspNetCore.App",
"version": "10.0.0"
}
],
"configProperties": {
"System.GC.Server": true,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}

View File

@@ -0,0 +1 @@
{"Version":1,"ManifestType":"Build","Endpoints":[]}

View File

@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}

Some files were not shown because too many files have changed in this diff Show More