Insert

Use case classes to model the data to insert

scala> case class Insertable(s: String, i: Int, l: Long) // same as the table
defined class Insertable

scala> val insertStatement = sSession.insert("mytable", Insertable("some str", 1234, 5678L))
insertStatement: com.weather.scalacass.scsession.SCInsertStatement = SCInsertStatement(INSERT INTO mykeyspace.mytable (s, i, l) VALUES (some str, 1234, 5678))

scala> insertStatement.execute()
res2: com.weather.scalacass.Result[com.datastax.driver.core.ResultSet] = Right(ResultSet[ exhausted: true, Columns[]])

If Statement

You can also specify existence of the row:

scala> val ifNotExistsInsert = insertStatement.ifNotExists
ifNotExistsInsert: com.weather.scalacass.scsession.SCInsertStatement = SCInsertStatement(INSERT INTO mykeyspace.mytable (s, i, l) VALUES (some str, 1234, 5678) IF NOT EXISTS)

scala> ifNotExistsInsert.execute()
res3: com.weather.scalacass.Result[com.datastax.driver.core.ResultSet] = Right(ResultSet[ exhausted: false, Columns[[applied](boolean), s(varchar), i(int), l(bigint)]])

Or remove the existence check:

scala> val noIfNotExistsInsert = ifNotExistsInsert.noConditional
noIfNotExistsInsert: com.weather.scalacass.scsession.SCInsertStatement = SCInsertStatement(INSERT INTO mykeyspace.mytable (s, i, l) VALUES (some str, 1234, 5678))

scala> noIfNotExistsInsert.execute()
res4: com.weather.scalacass.Result[com.datastax.driver.core.ResultSet] = Right(ResultSet[ exhausted: true, Columns[]])

TTL

You can add a TTL:

scala> val ttlInsert = insertStatement.usingTTL(12345)
ttlInsert: com.weather.scalacass.scsession.SCInsertStatement = SCInsertStatement(INSERT INTO mykeyspace.mytable (s, i, l) VALUES (some str, 1234, 5678) USING TTL 12345)

scala> ttlInsert.execute()
res5: com.weather.scalacass.Result[com.datastax.driver.core.ResultSet] = Right(ResultSet[ exhausted: true, Columns[]])

And remove the TTL:

scala> val noTtlInsert = ttlInsert.noTTL
noTtlInsert: com.weather.scalacass.scsession.SCInsertStatement = SCInsertStatement(INSERT INTO mykeyspace.mytable (s, i, l) VALUES (some str, 1234, 5678))

scala> noTtlInsert.execute()
res6: com.weather.scalacass.Result[com.datastax.driver.core.ResultSet] = Right(ResultSet[ exhausted: true, Columns[]])

Timestamp

You can specify a timestamp:

scala> val timestampInsert = insertStatement.usingTimestamp(System.currentTimeMillis)
timestampInsert: com.weather.scalacass.scsession.SCInsertStatement = SCInsertStatement(INSERT INTO mykeyspace.mytable (s, i, l) VALUES (some str, 1234, 5678) USING TIMESTAMP 1532318862192)

scala> timestampInsert.execute()
res7: com.weather.scalacass.Result[com.datastax.driver.core.ResultSet] = Right(ResultSet[ exhausted: true, Columns[]])

Or use shorthand for current time:

scala> val timestampNowInsert = insertStatement.usingTimestampNow
timestampNowInsert: com.weather.scalacass.scsession.SCInsertStatement = SCInsertStatement(INSERT INTO mykeyspace.mytable (s, i, l) VALUES (some str, 1234, 5678) USING TIMESTAMP 1532318862449)

scala> timestampNowInsert.execute()
res8: com.weather.scalacass.Result[com.datastax.driver.core.ResultSet] = Right(ResultSet[ exhausted: true, Columns[]])

And finally, remove a timestamp from the statement:

scala> val noTimestampInsert = timestampInsert.noTimestamp
noTimestampInsert: com.weather.scalacass.scsession.SCInsertStatement = SCInsertStatement(INSERT INTO mykeyspace.mytable (s, i, l) VALUES (some str, 1234, 5678))

scala> noTimestampInsert.execute()
res9: com.weather.scalacass.Result[com.datastax.driver.core.ResultSet] = Right(ResultSet[ exhausted: true, Columns[]])