app/model/Pillar.scala (24 lines of code) (raw):

package model import com.amazonaws.services.dynamodbv2.document.Item import ai.x.play.json.Jsonx import ai.x.play.json.Encoders.encoder import play.api.Logging import play.api.libs.json.{Format, Json} import com.gu.tagmanagement.{Pillar => ThriftPillar} import scala.util.control.NonFatal case class Pillar(id: Long, path: String, name: String, sectionIds: Seq[String], pageId: Long) object Pillar extends Logging { implicit val pillarFormat: Format[Pillar] = Jsonx.formatCaseClassUseDefaults[Pillar] def toItem(pillar: Pillar): Item = Item.fromJSON(Json.toJson(pillar).toString()) def fromItem(item: Item): Pillar = try { Json.parse(item.toJSON).as[Pillar] } catch { case NonFatal(e) => logger.error(s"failed to load pillar ${item.toJSON}", e); throw e } def asThrift(pillar: Pillar) = ThriftPillar( id = pillar.id, path = pillar.path, name = pillar.name, sectionIds = pillar.sectionIds ) }