1
0
Fork 0
forked from dlang/cdcdb

Библиотека модернизирована под использование в БД в качестве первичных ключей UUID идентификаторов.

Время фиксируется в Unix Timestamp метке с миллисекундами.
Добавлена новая сущеность StorageFile, который является отправной точкой для работы со снимками.
Расширен интерфейс Storage - добавлены дополнительные фозможности для работы со снимками.
Введены структуры: для работы со временм - UTS, для работы с идентификатором - Identifier.
This commit is contained in:
Alexander Zhirov 2025-09-30 02:39:29 +03:00
parent dd28c4b4d7
commit 1f50b21457
Signed by: alexander
GPG key ID: C8D8BE544A27C511
12 changed files with 989 additions and 602 deletions

View file

@ -3,14 +3,14 @@ import std.stdio : writeln, File;
import std.file : exists, remove, read;
import zstd : Level;
import core.thread : Thread, msecs, dur;
void main()
{
// Создаем временную базу для примера
string dbPath = "./bin/example.db";
if (exists(dbPath)) {
remove(dbPath);
}
if (exists(dbPath)) { remove(dbPath); }
Context context;
@ -31,15 +31,18 @@ void main()
ubyte[] data2 = cast(ubyte[]) "Hello, updated cdcdb!".dup;
// Создание первого снимка
auto snap1 = storage.newSnapshot("example_file", data1, context, "Версия 1.0");
Snapshot snap1 = storage.newSnapshot("example_file", data1, context, "Версия 1.0");
if (snap1)
{
writeln("Создан снимок с ID: ", snap1.id);
writeln("Файл: ", snap1.file);
writeln("Размер: ", snap1.length, " байт");
writeln("Статус: ", snap1.status);
writeln("Время: ", snap1.created);
}
Thread.sleep( dur!("msecs")( 50 ) );
// Создание второго снимка (обновление)
auto snap2 = storage.newSnapshot("example_file", data2, context, "Версия 2.0");
if (snap2)
@ -68,9 +71,9 @@ void main()
writeln("Хэш совпадает: ", lastSnap.sha256 == digest!SHA256(restoredData));
}
// Удаление снимков по метке
long deleted = storage.removeSnapshots("example_file");
writeln("Удалено снимков: ", deleted);
// Удаление файла
if (storage.deleteFile("example_file"))
writeln("Файл example_file удален.");
// Проверка: снимки удалены
auto remaining = storage.getSnapshots("example_file");