2222#include " silo/common/data_version.h"
2323#include " silo/common/file_to_string.h"
2424#include " silo/common/format_number.h"
25+ #include " silo/common/lineage_tree.h"
2526#include " silo/common/nucleotide_symbols.h"
2627#include " silo/common/panic.h"
2728#include " silo/common/silo_directory.h"
2829#include " silo/common/version.h"
2930#include " silo/database_info.h"
3031#include " silo/persistence/exception.h"
3132#include " silo/roaring/roaring_serialize.h"
32- #include " silo/storage/column/sequence_column.h"
33- #include " silo/storage/serialize_optional.h"
33+ #include " silo/schema/database_schema.h"
3434#include " silo/storage/table_partition.h"
3535
3636namespace silo {
@@ -69,6 +69,9 @@ DatabaseInfo Database::getDatabaseInfo() const {
6969 };
7070}
7171
72+ const std::string DATABASE_SCHEMA_FILENAME = " database_schema.silo" ;
73+ const std::string DATA_VERSION_FILENAME = " data_version.silo" ;
74+
7275void Database::saveDatabaseState (const std::filesystem::path& save_directory) {
7376 if (getDataVersionTimestamp ().value .empty ()) {
7477 throw persistence::SaveDatabaseException (
@@ -105,20 +108,15 @@ void Database::saveDatabaseState(const std::filesystem::path& save_directory) {
105108
106109 SPDLOG_INFO (" Saving database schema" );
107110
108- auto yaml_string =
109- YAML::Dump (schema::DatabaseSchema{{{schema::TableName::getDefault (), table->schema }}}.toYAML ()
110- );
111- const auto database_schema_filename = versioned_save_directory / " database_schema.yaml" ;
112- std::ofstream database_schema_file{database_schema_filename};
113- database_schema_file << yaml_string;
114- database_schema_file.close ();
111+ const auto database_schema_path = versioned_save_directory / DATABASE_SCHEMA_FILENAME ;
112+ schema.saveToFile (database_schema_path);
115113
116114 std::string table_name = schema.tables .begin ()->first .getName ();
117115 SPDLOG_DEBUG (" Saving table data" );
118116 std::filesystem::create_directory (versioned_save_directory / table_name);
119117 table->saveData (versioned_save_directory / table_name);
120118
121- data_version_.saveToFile (versioned_save_directory / " data_version.silo " );
119+ data_version_.saveToFile (versioned_save_directory / DATA_VERSION_FILENAME );
122120}
123121
124122namespace {
@@ -143,26 +141,19 @@ Database Database::loadDatabaseState(const silo::SiloDataSource& silo_data_sourc
143141 SPDLOG_INFO (" Loading database from data source: {}" , silo_data_source.toDebugString ());
144142 const auto save_directory = silo_data_source.path ;
145143
146- const auto database_schema_filename = save_directory / " database_schema.yaml" ;
147- auto yaml_string = common::fileToString (database_schema_filename);
148- if (yaml_string == std::nullopt ) {
149- throw silo::persistence::LoadDatabaseException (
150- fmt::format (" Could not load DatabaseSchema from {}" , database_schema_filename)
151- );
152- }
153- YAML ::Node yaml_schema = YAML::Load (yaml_string.value ());
154- schema::DatabaseSchema schema = schema::DatabaseSchema::fromYAML (yaml_schema);
144+ const auto database_schema_path = save_directory / DATABASE_SCHEMA_FILENAME ;
145+ auto schema = schema::DatabaseSchema::loadFromFile (database_schema_path);
155146
156147 Database database{schema};
157148
158149 std::string table_name = schema.tables .begin ()->first .getName ();
159150 SPDLOG_DEBUG (" Loading data for table " );
160151 database.table ->loadData (save_directory / table_name);
161152
162- database.data_version_ = loadDataVersion (save_directory / " data_version.silo " );
153+ database.data_version_ = loadDataVersion (save_directory / DATA_VERSION_FILENAME );
163154
164155 SPDLOG_INFO (
165- " Finished loading data_version from {}" , (save_directory / " data_version.silo " ).string ()
156+ " Finished loading data_version from {}" , (save_directory / DATA_VERSION_FILENAME ).string ()
166157 );
167158 SPDLOG_INFO (" Database info after loading: {}" , database.getDatabaseInfo ());
168159
0 commit comments