Skip to content

Instantly share code, notes, and snippets.

View vichu's full-sized avatar

Viswanathan Ranganathan vichu

View GitHub Profile
class CompletableFASync {
private static CompletableFuture<Integer> doubleMe(final Integer number) {
return CompletableFuture.completedFuture(number * 2);
}
public static void main(String[] args) throws InterruptedException {
// Just an example future that returns double of an integer and convert it to String.
final CompletionStage<String> processedCompletableFuture =
@vichu
vichu / Elsepart.c
Created February 21, 2019 16:37
Else part of bfs we discussed yesterday
else{
while(!queue.empty()){
currentPoint = queue.front();
queue.pop();
for(int j=0;j<dir.length;j++){
if(validDir && notVisited){
Point nextPoint = currentPoint;
switch (case){
...
val userPair = for{
uuid <- databaseService.createUser(UUID.nameUUIDFromBytes("Sumanth".getBytes), "Sumanth", "Kumar", "sumanth@indywiz.com")
userByFirstName <- databaseService.selectUserByFirstName("Sumanth")
userById <- databaseService.selectUserById(uuid.get)
} yield (userById, userByFirstName)
val res = userPair.map {
case (userById, userByFirstName) =>
logger.info(s"User by Id : ${userById.get}")
logger.info(s"User by first name: ${userByFirstName.get}")
}
object UserDatabase extends UserDatabase
object databaseService extends UserDatabaseService {
override def database: UserDatabase = UserDatabase
}
implicit val cassandraConnection: CassandraConnection = {
ContactPoint.local.keySpace("user_keyspace")
}
import com.outworkers.phantom.dsl._
import scala.concurrent.Future
trait UserDatabaseService extends UserDbProvider {
// Orchestrate your low level queries appropriately.
def createUser(uuid: UUID, firstName: String, lastName: String, email:String): Future[Option[UUID]] =
database.userByIdInstance.createUserById(uuid, firstName, lastName, email)
.flatMap(_ => {
import com.outworkers.phantom.dsl._
// This class will encapsulate all the valid database instances
class UserDatabase(implicit cassandraConnection: CassandraConnection)
extends Database[UserDatabase](connector = cassandraConnection) {
object userByIdInstance extends UserById with Connector
object userByFirstName extends UserByFirstName with Connector
}
// This trait will act as a database instance provider.
// Query based model
abstract class UserById extends Table[UserById, User] {
// Override table metadata
override def tableName: String = "user_by_id"
// Define the table schema
object id extends UUIDColumn with PartitionKey
object fName extends StringColumn {
override def name: String = "firstName"
}
@vichu
vichu / User.scala
Last active December 22, 2018 22:52
Model Class for User
// Base model used as DTO
case class User(id: UUID, firstName: String, lastName: String, email: String)
@vichu
vichu / build.sbt
Created December 22, 2018 22:16
build.sbt
name := "phantom-scala-example"
version := "0.1"
scalaVersion := "2.12.8"
libraryDependencies ++= Seq(
// Database dependencies
"com.outworkers" % "phantom-dsl_2.12" % "2.30.0",
// scala logging