データベース(MS SQL サーバーインスタンス)に特定のビューがあるかどうかのチェックを自動化するテストを作成しています。 BasicTable
オブジェクトです。以下のような 何か:これに基づきScalaqueryでテーブル/ビューの存在をテストします。存在しない場合は作成します。
@Test def CheckAndBuildViewsOnDB() = {
VerifyViewExists(FooTable, BarTable) //FooTable et al defined as:
FooTable extends BasicTable[Foo], where Foo is a case class & FooTable
has a DDL create defined.
}
とStefan Zeiger's assertTablesExist
exampleからカンニングは、私は、ビューのためのDBを確認するために少しの方法を作った、と チェックが例外は、そのビューのBasicTable ddl.create
を呼び出すスローする場合:
def VerifyViewExists(views:BasicTable*) = {
DatabaseSession.session() withSession { //helper class which
initiates a db connection & session
views map {
v => (try queryNA[Int]("select 1 from '"+ v.tableName +"'
where 1<0").list
catch {case _: Exception => v.ddl.create;
println("Couldn't find view "+v.tableName+", creating it
now...");})
} } }
- これはビューパラメータを入力するための正しい方法ではありません。私には合理的なようだが、2つの問題がある
BasicTable
、 となり、map引数vのスコープ「 」で何かが起きて、"error: value tableName is not a member of type parameter T0"
という結果になりました。
恩赦この質問との私の無知、私は 私の問題の根本は、Scalaの型システムを理解していないとあると思われるよう。 これらの2つの問題に加えて、私は が実際には完了していないと感じています。VerifyViewExists
は、最も簡潔で読みやすいスタイルです。
はい、それは私が欠けていた構文ビットです。ありがとう! – Noel