You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.3 KiB
62 lines
1.3 KiB
import 'package:practice_engine/practice_engine.dart';
|
|
import '../data/default_deck.dart';
|
|
|
|
/// Service for managing deck storage and retrieval.
|
|
/// Currently uses in-memory storage. Can be extended to use persistent storage.
|
|
class DeckStorage {
|
|
static final DeckStorage _instance = DeckStorage._internal();
|
|
factory DeckStorage() => _instance;
|
|
DeckStorage._internal();
|
|
|
|
final Map<String, Deck> _decks = {};
|
|
bool _initialized = false;
|
|
|
|
/// Initialize storage with default deck if empty
|
|
void initialize() {
|
|
if (_initialized) return;
|
|
_initialized = true;
|
|
|
|
// Add default deck if no decks exist
|
|
if (_decks.isEmpty) {
|
|
final defaultDeck = DefaultDeck.deck;
|
|
_decks[defaultDeck.id] = defaultDeck;
|
|
}
|
|
}
|
|
|
|
/// Get all decks
|
|
List<Deck> getAllDecks() {
|
|
initialize();
|
|
return _decks.values.toList();
|
|
}
|
|
|
|
/// Get a deck by ID
|
|
Deck? getDeck(String id) {
|
|
initialize();
|
|
return _decks[id];
|
|
}
|
|
|
|
/// Add or update a deck
|
|
void saveDeck(Deck deck) {
|
|
initialize();
|
|
_decks[deck.id] = deck;
|
|
}
|
|
|
|
/// Delete a deck
|
|
void deleteDeck(String id) {
|
|
_decks.remove(id);
|
|
}
|
|
|
|
/// Check if a deck exists
|
|
bool hasDeck(String id) {
|
|
initialize();
|
|
return _decks.containsKey(id);
|
|
}
|
|
|
|
/// Get the number of decks
|
|
int get deckCount {
|
|
initialize();
|
|
return _decks.length;
|
|
}
|
|
}
|
|
|