TelegramAsDatabase 3.0.0
dotnet add package TelegramAsDatabase --version 3.0.0
NuGet\Install-Package TelegramAsDatabase -Version 3.0.0
<PackageReference Include="TelegramAsDatabase" Version="3.0.0" />
<PackageVersion Include="TelegramAsDatabase" Version="3.0.0" />
<PackageReference Include="TelegramAsDatabase" />
paket add TelegramAsDatabase --version 3.0.0
#r "nuget: TelegramAsDatabase, 3.0.0"
#addin nuget:?package=TelegramAsDatabase&version=3.0.0
#tool nuget:?package=TelegramAsDatabase&version=3.0.0
TDB: Telegram as database service
This project is a .NET application that utilizes Telegram's free cloud storage to provide a simple, scalable database solution. It enables data storage and management through a Telegram bot, allowing users to interact with the database directly via Telegram. By leveraging Telegram's cloud infrastructure, the project eliminates the need for traditional database setups, offering a lightweight and efficient alternative for small to medium-scale data storage needs.
Now telegram as database is availabe on nuget.org: click here
Features
- Asynchronous Operations: All methods are asynchronous (using
Task
) to avoid blocking the calling thread. - Transaction Support: Offers the ability to begin a transaction for atomic operations.
- Generic Interface: The interface is generic (
ITDB
) allowing it to work with various data types. - Data Model: Uses a generic data model (
TDBData<T>
) to encapsulate data and metadata. - FluentResults Integration: Leverages the FluentResults library for robust error handling and reporting.
- Cancellation Support: All methods accept an optional
CancellationToken
for graceful cancellation. - Key-Value Storage: Primarily designed for key-value based data storage and retrieval.
- Basic CRUD Operations: Supports common operations like Get, Set, Update, Delete, and Exists.
- Bulk Operations: Includes methods for saving and deleting multiple items in bulk.
- Key Retrieval: Provides a method to retrieve all keys currently stored.
- Retry Policy: Implements a retry policy to enhance resilience against transient failures. This policy can be configured to retry operations a specified number of times with optional backoff strategies, improving the overall reliability and availability of the service.
Getting start
Create a bot using bot father in telegram (Important: Dont Change the bot description at all)
Create a channel as a database source in telegram
Now add your bot that created in the first step to the channel as an administrator and give all premissions to it.
Goto your appsettings and add TDB config to it.:
- The api key is key that you get from BotFather in the first step
- The Channel Id is the id of the channel you can get it by forwarding a message of the channel to @userinfobot bot.
"TDBConfig": { "ApiKey": "7753344678:AAFf4MIQSShxa4djp172DjhDe2_jqRsyOeU", "ChannelId": "-1002378130994" }
Now Add Tdb to your service container:
var configurations = builder.Configuration; builder.Services.AddTDB(configurations);
Done! now you can use the telegram free database
How to use
The example code of using the TDB:
public class MyCustomService
{
private ITDB _tdbService;
public MyCustomService(ITDB tdb)
{
_tdbService = tdb;
}
public async Task MyCustomMethod(CancellationToken cancellationToken)
{
// [--------- GetAllKeysAsync ---------]
var allKeys = await _tdbService.GetAllKeysAsync(cancellationToken);
// [------------ SaveAsync ------------]
var saveResult = await _tdbService.SaveAsync(new TDBData<MyTestModel>()
{
Key = "itemkey",
Value = new MyTestModel()
{
Name = "FirstTest",
Description = "FirstDescription",
Type = "FuncTest"
}
}, cancellationToken);
// [--------- UpdateAsync ---------]
var updateResult = await _tdbService.UpdateAsync("itemkey", new TDBData<MyTestModel>()
{
Key = "itemkey",
Value = new MyTestModel()
{
Name = "FirstTest2",
Description = "FirstDescription2",
Type = "FuncTest2"
}
}, cancellationToken);
// [--------- DeleteAsync ---------]
var deleteResult = await _tdbService.DeleteAsync("itemkey", cancellationToken);
}
}
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 was computed. 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 was computed. 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. |
-
net8.0
- FluentResults (>= 3.16.0)
- MemoryPack (>= 1.21.3)
- Microsoft.Extensions.Logging.Console (>= 8.0.0)
- Newtonsoft.Json (>= 13.0.3)
- Polly (>= 8.5.0)
- Telegram.Bot (>= 22.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Initial Release