kiss_datastore 0.1.0 copy "kiss_datastore: ^0.1.0" to clipboard
kiss_datastore: ^0.1.0 copied to clipboard

A simple, abstract datastore interface for Dart with an in-memory implementation for testing and development.

Kiss Datastore #

A simple, abstract datastore interface for Dart with an in-memory implementation for testing and development.

Features #

  • Abstract Datastore Interface - Clean API for file storage operations
  • InMemoryDatastore - Full in-memory implementation for testing
  • Upload Progress Tracking - Real-time progress streams with pause/resume/cancel
  • Slow Mode Simulation - Configurable upload chunking for realistic testing
  • HTTP Client - Built-in HTTP server to serve stored data
  • Multiple Instances - Named datastore instances for isolation

Usage #

This is the base interface package, included are two reference implementations. ** Concrete implemenations for different providers are provided in other packages. **

Basic Operations #

import 'package:kiss_datastore/src/in_memory_datastore.dart';

// Create datastore instance
final datastore = InMemoryDatastore('my-instance');

// Upload data
final data = utf8.encode('Hello, World!');
final upload = datastore.putData(
  'hello.txt', 
  data, 
  contentType: 'text/plain',
);

// Monitor progress
upload.progress.listen((bytesUploaded) {
  print('Uploaded: $bytesUploaded bytes');
});

// Wait for completion
final item = await upload.result;
print('Stored at: ${item.uri}');

// Check if file exists
final exists = await datastore.exists('hello.txt');

// Retrieve data
final retrievedItem = await datastore.get('hello.txt');

// Delete data
await datastore.delete('hello.txt');

This is also a file based version if local persistance is needed.

Slow Mode Configuration #

// Configure slow mode per instance
final slowDatastore = InMemoryDatastore(
  'test-instance',
  true,                                    // Enable slow mode
  const Duration(milliseconds: 50),        // Delay between chunks
  1024,                                    // Chunk size in bytes
);

// Or for FileDatastore
final slowFileStore = FileDatastore(
  './test_storage',
  uploadSlowMode: true,
  uploadSlowModeDelay: const Duration(milliseconds: 100),
  uploadSlowModeChunkSize: 512,
);

// Upload will now be chunked with delays
final upload = slowDatastore.putData('large-file.bin', largeData);

// Control upload (only works in slow mode)
upload.pause();   // Pause upload
upload.resume();  // Resume upload  
upload.cancel();  // Cancel upload

Testing #

Run tests with:

dart test

The test suite covers:

  • Basic CRUD operations for both implementations
  • Upload progress and control
  • Slow mode simulation
  • HTTP client functionality
  • Instance isolation
  • File system operations
  • Error handling
0
likes
130
points
11
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A simple, abstract datastore interface for Dart with an in-memory implementation for testing and development.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

very_good_analysis

More

Packages that depend on kiss_datastore