Database init is now stable!

This commit is contained in:
jacqueline
2023-05-08 17:47:29 +10:00
parent fe19478e0f
commit 16e6180ba7
10 changed files with 681 additions and 118 deletions
+42 -4
View File
@@ -154,7 +154,7 @@ int CmdDbInit(int argc, char** argv) {
return 1;
}
sInstance->database_->Populate().get();
sInstance->database_->Update();
return 0;
}
@@ -177,11 +177,11 @@ int CmdDbSongs(int argc, char** argv) {
}
database::Result<database::Song> res =
sInstance->database_->GetSongs(10).get();
sInstance->database_->GetSongs(20).get();
while (true) {
std::unique_ptr<std::vector<database::Song>> r = res.values();
std::unique_ptr<std::vector<database::Song>> r(res.values());
for (database::Song s : *r) {
std::cout << s.title << std::endl;
std::cout << s.tags().title.value_or("[BLANK]") << std::endl;
}
if (res.HasMore()) {
res = sInstance->database_->GetMoreSongs(10, res.continuation()).get();
@@ -202,6 +202,43 @@ void RegisterDbSongs() {
esp_console_cmd_register(&cmd);
}
int CmdDbDump(int argc, char** argv) {
static const std::string usage = "usage: db_dump";
if (argc != 1) {
std::cout << usage << std::endl;
return 1;
}
std::cout << "=== BEGIN DUMP ===" << std::endl;
database::Result<std::string> res = sInstance->database_->GetDump(20).get();
while (true) {
std::unique_ptr<std::vector<std::string>> r(res.values());
if (r == nullptr) {
break;
}
for (std::string s : *r) {
std::cout << s << std::endl;
}
if (res.HasMore()) {
res = sInstance->database_->GetMoreDump(20, res.continuation()).get();
}
}
std::cout << "=== END DUMP ===" << std::endl;
return 0;
}
void RegisterDbDump() {
esp_console_cmd_t cmd{.command = "db_dump",
.help = "prints every key/value pair in the db",
.hint = NULL,
.func = &CmdDbDump,
.argtable = NULL};
esp_console_cmd_register(&cmd);
}
AppConsole::AppConsole(audio::AudioPlayback* playback,
database::Database* database)
: playback_(playback), database_(database) {
@@ -219,6 +256,7 @@ auto AppConsole::RegisterExtraComponents() -> void {
RegisterAudioStatus();
RegisterDbInit();
RegisterDbSongs();
RegisterDbDump();
}
} // namespace console