CppRestAPIのdatabase

Admin私のストア

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メソッドでクエリを実行します。

session.sql(query).bind(paramaters...).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クラスを一般的なメソッドの名称でラップしています。

ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。