DataBin - uniform data model for raw attachment data stream storage
H.Necessaire provides a uniform data model for raw data stream attachments like documents, images, zip archives, etc.
dotnet add package H.Necessaire
Storing raw data stream, such as email attachments, documents, images, zip archives, etc. is an extremely often scenario in any project. H.Necessaire comes with data models and operations for such scenarios so that it's uniform across modules and projects. And it's called a DataBin.
DataBin Models
class DataBinMeta : IGuidIdentity
{
Guid ID
string Name
string Description
DateTime AsOf
DataBinFormatInfo Format
Note[] Notes
}
class DataBin : DataBinMeta
{
virtual async Task<ImADataBinStream> OpenDataBinStream()
}
interface ImADataBinStream : IDisposable
{
Stream DataStream
}
class DataBinFormatInfo : IStringIdentity
{
string ID
string Extension
string MimeType
string Encoding
}
Data Bin uniform models
DataBin construction help extensions
//Construct the DataBin from DataBinMeta
static DataBin ToBin(this DataBinMeta dataBinMeta, Func<DataBinMeta, Task<ImADataBinStream>> streamFactory)
//Construct ImADataBinStream from Stream
static ImADataBinStream ToDataBinStream(this Stream stream, params IDisposable[] otherDisposables)
View full models on GitHub:
H.Necessaire/Src/H.Necessaire/H.Necessaire/Models/DataBin.cs at master · hinteadan/H.Necessaire
A collection of useful data and execution extensions for .NET - hinteadan/H.Necessaire
Usage
//Define meta data
DataBinMeta attachmentMeta = new()
{
Name = "attachment.png",
Format = new DataBinFormatInfo
{
ID = "ImagePng",
Extension = "png",
MimeType = "image/png",
Encoding = null,
},
};
//Define data acquisition
H.Necessaire.DataBin attachment
= attachmentMeta
.ToBin(
x => x.Name.OpenEmbeddedResource().ToDataBinStream().AsTask()
);
//Use it
using (ImADataBinStream data = await attachment.OpenDataBinStream())
{
Console.WriteLine(await data.DataStream.ReadAsStringAsync());
}
Sample on GitHub Samples Repo
H.Necessaire.Usage.Samples/Src/H.Necessaire.Samples/H.Necessaire.Samples.DataBin/Program.cs at master · hinteadan/H.Necessaire.Usage.Samples
Usage Samples for H.Necessaire Docs WebSite. Contribute to hinteadan/H.Necessaire.Usage.Samples development by creating an account on GitHub.