Mostlylucid.Ephemeral.Atoms.Data
2.6.3
dotnet add package Mostlylucid.Ephemeral.Atoms.Data --version 2.6.3
NuGet\Install-Package Mostlylucid.Ephemeral.Atoms.Data -Version 2.6.3
<PackageReference Include="Mostlylucid.Ephemeral.Atoms.Data" Version="2.6.3" />
<PackageVersion Include="Mostlylucid.Ephemeral.Atoms.Data" Version="2.6.3" />
<PackageReference Include="Mostlylucid.Ephemeral.Atoms.Data" />
paket add Mostlylucid.Ephemeral.Atoms.Data --version 2.6.3
#r "nuget: Mostlylucid.Ephemeral.Atoms.Data, 2.6.3"
#:package Mostlylucid.Ephemeral.Atoms.Data@2.6.3
#addin nuget:?package=Mostlylucid.Ephemeral.Atoms.Data&version=2.6.3
#tool nuget:?package=Mostlylucid.Ephemeral.Atoms.Data&version=2.6.3
Mostlylucid.Ephemeral.Atoms.Data
Core data storage abstractions for signal-driven persistence. This package provides the base interfaces and configuration used by storage-specific implementations.
Installation
dotnet add package Mostlylucid.Ephemeral.Atoms.Data
For actual storage, install one of:
Mostlylucid.Ephemeral.Atoms.Data.File- JSON file storageMostlylucid.Ephemeral.Atoms.Data.Sqlite- SQLite databaseMostlylucid.Ephemeral.Atoms.Data.Postgres- PostgreSQL database
Configuration
All storage atoms share common configuration:
var config = new DataStorageConfig
{
DatabaseName = "orders", // Used in signal patterns
SignalPrefix = "save.data", // save.data.orders
LoadSignalPrefix = "load.data", // load.data.orders
DeleteSignalPrefix = "delete.data", // delete.data.orders
MaxConcurrency = 1, // Sequential writes (recommended)
EmitCompletionSignals = true // Emit saved.data.orders on success
};
Signal Patterns
| Signal | Description |
|---|---|
save.data.{dbname} |
Trigger a save operation |
load.data.{dbname} |
Trigger a load operation |
delete.data.{dbname} |
Trigger a delete operation |
saved.data.{dbname} |
Emitted after successful save |
deleted.data.{dbname} |
Emitted after successful delete |
error.data.{dbname}:{ExceptionType} |
Emitted on error |
Usage
Direct API (Atom Style)
var signals = new SignalSink();
var config = new DataStorageConfig { DatabaseName = "orders" };
await using var storage = new FileDataStorageAtom<string, Order>(signals, config, "./data");
// Save directly
await storage.SaveAsync("order-123", new Order { Id = "order-123", Total = 99.99m });
// Load
var order = await storage.LoadAsync("order-123");
// Fire-and-forget via signal
storage.EnqueueSave("order-456", new Order { Id = "order-456", Total = 50.00m });
Signal-Driven (Attribute Style)
[EphemeralJobs]
public class OrderService
{
private readonly IDataStorageAtom<string, Order> _storage;
public OrderService(IDataStorageAtom<string, Order> storage)
{
_storage = storage;
}
[EphemeralJob("order.created")]
public async Task OnOrderCreated(SignalEvent signal, Order order)
{
// Storage listens for save.data.orders automatically
await _storage.SaveAsync(order.Id, order);
}
[EphemeralJob("saved.data.orders")]
public Task OnOrderSaved(SignalEvent signal)
{
Console.WriteLine($"Order {signal.Key} saved successfully");
return Task.CompletedTask;
}
}
Interfaces
IDataStorageAtom<TKey, TValue>
public interface IDataStorageAtom<TKey, TValue> : IAsyncDisposable
{
DataStorageConfig Config { get; }
Task SaveAsync(TKey key, TValue value, CancellationToken ct = default);
Task<TValue?> LoadAsync(TKey key, CancellationToken ct = default);
Task DeleteAsync(TKey key, CancellationToken ct = default);
Task<bool> ExistsAsync(TKey key, CancellationToken ct = default);
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- mostlylucid.ephemeral (>= 2.6.3)
-
net8.0
- mostlylucid.ephemeral (>= 2.6.3)
-
net9.0
- mostlylucid.ephemeral (>= 2.6.3)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on Mostlylucid.Ephemeral.Atoms.Data:
| Package | Downloads |
|---|---|
|
mostlylucid.ephemeral.complete
Meta-package that references all Mostlylucid.Ephemeral packages - bounded async execution with signals, atoms, and patterns. Install this single package to get everything. |
|
|
Mostlylucid.Ephemeral.Atoms.Data.Sqlite
SQLite data storage atom for signal-driven persistence. Key-value storage with full ACID guarantees. |
|
|
Mostlylucid.Ephemeral.Atoms.Data.File
File-based JSON data storage atom for signal-driven persistence. Simple key-value storage using the filesystem. |
|
|
Mostlylucid.Ephemeral.Atoms.Data.Postgres
PostgreSQL data storage atom for signal-driven persistence. Key-value storage with native JSONB support. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.6.3 | 159 | 5/22/2026 |
| 2.6.2 | 172 | 5/22/2026 |
| 2.6.0 | 160 | 5/22/2026 |
| 2.5.1 | 157 | 5/22/2026 |
| 2.5.0 | 153 | 5/3/2026 |
| 2.4.0 | 151 | 4/17/2026 |
| 2.3.2 | 168 | 1/9/2026 |
| 2.3.1 | 181 | 1/9/2026 |
| 2.3.1-alpha0 | 166 | 1/9/2026 |
| 2.3.0 | 1,239 | 1/8/2026 |
| 2.3.0-alpha1 | 169 | 1/8/2026 |
| 2.1.0 | 171 | 1/8/2026 |
| 2.1.0-preview | 166 | 1/8/2026 |
| 2.0.1 | 165 | 1/8/2026 |
| 2.0.0 | 213 | 1/8/2026 |
| 2.0.0-alpha1 | 163 | 1/8/2026 |
| 2.0.0-alpha0 | 165 | 1/8/2026 |
| 1.7.1 | 501 | 12/11/2025 |
| 1.6.8 | 521 | 12/9/2025 |
| 1.6.7 | 520 | 12/9/2025 |