Skip to content

Commit

Permalink
Finished the repository structures
Browse files Browse the repository at this point in the history
  • Loading branch information
manuelkiessling committed Jan 18, 2016
1 parent d58d681 commit cb7a9b4
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 0 deletions.
27 changes: 27 additions & 0 deletions app/repositories/CassandraRepository.scala
@@ -0,0 +1,27 @@
package repositories

import com.datastax.driver.core.querybuilder.QueryBuilder
import com.datastax.driver.core.querybuilder.QueryBuilder._
import com.datastax.driver.core.{Row, Session}

abstract class CassandraRepository[M, I](session: Session, tablename: String, partitionKeyName: String)
extends Repository[M, I] {
def rowToModel(row: Row): M

def getOneRowBySinglePartitionKeyId(partitionKeyValue: I): Row = {
val selectStmt =
select()
.from(tablename)
.where(QueryBuilder.eq(partitionKeyName, partitionKeyValue))
.limit(1)

val resultSet = session.execute(selectStmt)
val row = resultSet.one()
row
}

override def getOneById(id: I): M = {
val row = getOneRowBySinglePartitionKeyId(id)
rowToModel(row)
}
}
14 changes: 14 additions & 0 deletions app/repositories/ProductsRepository.scala
@@ -0,0 +1,14 @@
package repositories

import com.datastax.driver.core.{Row, Session}
import models.ProductModel

class ProductsRepository(session: Session)
extends CassandraRepository[ProductModel, Int](session, "products", "id") {
override def rowToModel(row: Row): ProductModel = {
ProductModel(
row.getInt("id"),
row.getString("name")
)
}
}

0 comments on commit cb7a9b4

Please sign in to comment.