Cells/cells/shared/src/net/okennedy/cells/WebsocketRequest.scala

30 lines
1.1 KiB
Scala

package net.okennedy.cells
import play.api.libs.json._
sealed trait WebsocketRequest
case class WebsocketHello(client: String) extends WebsocketRequest
sealed trait CanvasRequest extends WebsocketRequest
case class RequestAddTable(xy: Option[(Int, Int)] = None) extends CanvasRequest
sealed trait TableRequest extends CanvasRequest
{
val table: Identifier
}
case class RequestSetTablePosition(table: Identifier, x: Int, y: Int) extends TableRequest
case class RequestUpdateColumns(table: Identifier, op: SeqOp[serialized.ColSpec]) extends TableRequest
case class RequestUpdateRows(table: Identifier, op: SeqOp[serialized.RowSpec]) extends TableRequest
object WebsocketRequest
{
implicit val WebsocketHelloFormat: Format[WebsocketHello] = Json.format
implicit val RequestAddTableFormat: Format[RequestAddTable] = Json.format
implicit val RequestSetTablePositionFormat: Format[RequestSetTablePosition] = Json.format
implicit val RequestUpdateColumnsFormat: Format[RequestUpdateColumns] = Json.format
implicit val RequestUpdateRowsFormat: Format[RequestUpdateRows] = Json.format
implicit val WebsocketRequestFormat: Format[WebsocketRequest] = Json.format
}