9 Commits
1.1.1 ... 1.1.4

4 changed files with 25 additions and 6 deletions

View File

@@ -4,8 +4,8 @@ on:
push: push:
branches: branches:
- "main" - "main"
#paths: paths:
#- "TimetableDesigner.Backend.Events**" - "TimetableDesigner.Backend.Events**"
jobs: jobs:
build: build:

View File

@@ -2,7 +2,16 @@
namespace TimetableDesigner.Backend.Events; namespace TimetableDesigner.Backend.Events;
public abstract class EventQueue public abstract class EventQueue<TSelf> where TSelf : EventQueue<TSelf>
{ {
public abstract void Setup(IServiceCollection services); public void Setup<TBuilder>(IServiceCollection services, TBuilder configuration)
where TBuilder : EventQueueBuilder<TSelf> =>
Setup(services, configuration.GetConnectionParameters());
public void Setup(IServiceCollection services, string connectionString)
=> Setup(services, connectionString.Split(';')
.Select(x => x.Split('='))
.ToDictionary(x => x.First(), x => x.Last()));
protected abstract void Setup(IServiceCollection services, IDictionary<string, string> connectionParameters);
} }

View File

@@ -0,0 +1,6 @@
namespace TimetableDesigner.Backend.Events;
public abstract class EventQueueBuilder<TQueue> where TQueue : EventQueue<TQueue>
{
public abstract IDictionary<string, string> GetConnectionParameters();
}

View File

@@ -1,6 +1,10 @@
namespace TimetableDesigner.Backend.Events; using System.Text.Json;
using System.Text.Json.Nodes;
namespace TimetableDesigner.Backend.Events;
public interface IEventQueuePublisher public interface IEventQueuePublisher
{ {
public Task PublishAsync<T>(T data) where T : class; public sealed Task PublishAsync<T>(T data) where T : class => PublishAsync(JsonSerializer.Serialize(data), data.GetType());
public Task PublishAsync(string data, Type dataType);
} }