app/util/AtomUpdateOperations.scala (17 lines of code) (raw):
package util
import com.gu.contentatom.thrift.{Atom, AtomType}
import com.gu.fezziwig.CirceScroogeMacros._
import com.gu.pandomainauth.model.User
import io.circe.Json
import io.circe.syntax._
import models.AtomAPIError
import util.AtomElementBuilders._
import util.Parser._
object AtomUpdateOperations {
def updateTopLevelFields(atom: Atom, user: User, publish: Boolean = false): Atom =
atom.copy(
contentChangeDetails = buildContentChangeDetails(user, Some(atom.contentChangeDetails), updateLastModified = true, updatePublished = publish),
defaultHtml = buildDefaultHtml(atom.atomType, atom.data)
)
def updateAtomFromJson(atom: Atom, json: Json, user: User): Either[AtomAPIError, Atom] = jsonToAtom(atom.asJson.deepMerge(json))
}