CppRestAPIのdatabase
Share
CppRestAPIのDatabaseクラスはEngine(Mysql)とFormat(UserFormat等)をtemplateパラメーターに指定します。setQueryメソッドでクエリ文字列を設定し、executeメソッドでクエリを実行します。最後にgetメソッドでレコードを取得し、engineのsetRecordメソッドでFormat型に変換します。一連のメソッドはメソッドチェーンとして実行できます。executeメソッドは引数をテンプレートパラメータパックとしてqueryのplaceholderに設定します。getメソッドは実行した結果をEngineクラスでレコードをFormat型で定義したtuple型に変換します。その後Format::Recordのリストに保存していきます。
Database db{Engine, Format};
std::list<Format::Record> result = db.setQuery(query_string).execute(paramaters...).get();
CppRestAPIのQueryクラスはDatabaseクラスのメソッドチェーンをselect、update、del、insertメソッドでラッピングします。
Engineクラスはデータベースの詳細を実装します。同じメソッドを提供すれば別のデータベース実装クラスをDatabaseクラスのtemplateパラメータとしてMysql実装クラスと交換できます。
MysqlクラスではDatabaseクラスと同様にsetQueryメソッドでクエリ文字列を設定し、executeメソッドでクエリを実行します。
setRecordメソッドはRow型をFormat型で定義されたTuple型に変換します。
Tuple型は標準のtuple型、Rowはmysql-connectorのRow型です。
indicesはstd::getメソッドのテンプレートパラメータです。
setRecord(Tuple& record, Row& row, std::index_sequence<indices...>)
データベース設計ではDatabaseクラスからクエリ結果を実装クラスから受け取り、FormatクラスのRecordリストを作成します。
QueryクラスでDatabaseクラスを一般的なメソッドの名称でラップしています。