aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/formats/json
diff options
context:
space:
mode:
authorVyatcheslav Suharnikov <arz.freezy@gmail.com>2017-07-12 11:39:40 +0300
committerVyatcheslav Suharnikov <arz.freezy@gmail.com>2017-07-12 14:07:05 +0300
commite2313321736520e6acaeb9aaa6ab426e6a8415ff (patch)
treed95187e353f2b03644ec02d8a92711ce9ec69efb /src/main/scala/xyz/driver/pdsuidomain/formats/json
parent7ab16021fe2b7e1f7d9d7800458e737d015e7630 (diff)
downloadrest-query-e2313321736520e6acaeb9aaa6ab426e6a8415ff.tar.gz
rest-query-e2313321736520e6acaeb9aaa6ab426e6a8415ff.tar.bz2
rest-query-e2313321736520e6acaeb9aaa6ab426e6a8415ff.zip
PDSUI-2018 Change user type from LongId to StringId
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/formats/json')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiDocument.scala12
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiPartialDocument.scala14
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/message/ApiMessage.scala4
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/message/ApiPartialMessage.scala2
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/patient/ApiPatient.scala12
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiRecord.scala12
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiUpdateRecord.scala14
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/trial/ApiTrial.scala12
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/trialhistory/ApiTrialHistory.scala2
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue/ApiPartialTrialIssue.scala2
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue/ApiTrialIssue.scala4
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/user/ApiPartialUser.scala8
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/user/ApiUser.scala8
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/userhistory/ApiUserHistory.scala4
14 files changed, 58 insertions, 52 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiDocument.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiDocument.scala
index 859972c..c01e65c 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiDocument.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiDocument.scala
@@ -20,9 +20,9 @@ final case class ApiDocument(id: Long,
requiredType: Option[String],
status: Option[String],
previousStatus: Option[String],
- assignee: Option[Long],
- previousAssignee: Option[Long],
- lastActiveUser: Option[Long],
+ assignee: Option[String],
+ previousAssignee: Option[String],
+ lastActiveUser: Option[String],
meta: Option[String])
object ApiDocument {
@@ -48,9 +48,9 @@ object ApiDocument {
(JsPath \ "requiredType").formatNullable[String] and
(JsPath \ "status").formatNullable(statusFormat) and
(JsPath \ "previousStatus").formatNullable(statusFormat) and
- (JsPath \ "assignee").formatNullable[Long] and
- (JsPath \ "previousAssignee").formatNullable[Long] and
- (JsPath \ "lastActiveUser").formatNullable[Long] and
+ (JsPath \ "assignee").formatNullable[String] and
+ (JsPath \ "previousAssignee").formatNullable[String] and
+ (JsPath \ "lastActiveUser").formatNullable[String] and
(JsPath \ "meta").formatNullable(Format(Reads { x =>
JsSuccess(Json.stringify(x))
}, Writes[String](Json.parse)))
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiPartialDocument.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiPartialDocument.scala
index 84e9e09..e9485e7 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiPartialDocument.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/document/ApiPartialDocument.scala
@@ -2,16 +2,16 @@ package xyz.driver.pdsuidomain.formats.json.document
import java.time.{LocalDate, LocalDateTime}
-import xyz.driver.pdsuicommon.domain.{LongId, TextJson}
-import xyz.driver.pdsuidomain.entities.Document.Meta
-import xyz.driver.pdsuidomain.entities._
import org.davidbild.tristate.Tristate
import org.davidbild.tristate.contrib.play.ToJsPathOpsFromJsPath
import play.api.data.validation._
import play.api.libs.functional.syntax._
import play.api.libs.json._
+import xyz.driver.pdsuicommon.domain.{LongId, StringId, TextJson}
import xyz.driver.pdsuicommon.json.{JsonSerializer, JsonValidationException}
import xyz.driver.pdsuicommon.validation.{AdditionalConstraints, JsonValidationErrors}
+import xyz.driver.pdsuidomain.entities.Document.Meta
+import xyz.driver.pdsuidomain.entities._
import scala.collection.breakOut
import scala.util.Try
@@ -24,7 +24,7 @@ final case class ApiPartialDocument(recordId: Option[Long],
provider: Tristate[String],
providerTypeId: Tristate[Long],
status: Option[String],
- assignee: Tristate[Long],
+ assignee: Tristate[String],
meta: Tristate[String]) {
import xyz.driver.pdsuicommon.domain.User
@@ -33,7 +33,7 @@ final case class ApiPartialDocument(recordId: Option[Long],
id = orig.id,
status = status.map(Document.Status.fromString).getOrElse(orig.status),
previousStatus = orig.previousStatus,
- assignee = assignee.map(LongId[User]).cata(Some(_), None, orig.assignee),
+ assignee = assignee.map(StringId[User]).cata(Some(_), None, orig.assignee),
previousAssignee = orig.previousAssignee,
lastActiveUserId = orig.lastActiveUserId,
recordId = recordId.map(LongId[MedicalRecord]).getOrElse(orig.recordId),
@@ -94,7 +94,7 @@ object ApiPartialDocument {
case x if Document.Status.fromString.isDefinedAt(x) => true
case _ => false
})) and
- (JsPath \ "assignee").readTristate[Long] and
+ (JsPath \ "assignee").readTristate[String] and
(JsPath \ "meta").readTristate(Reads { x => JsSuccess(Json.stringify(x)) }).map {
case Tristate.Present("{}") => Tristate.Absent
case x => x
@@ -110,7 +110,7 @@ object ApiPartialDocument {
(JsPath \ "provider").writeTristate[String] and
(JsPath \ "providerTypeId").writeTristate[Long] and
(JsPath \ "status").writeNullable[String] and
- (JsPath \ "assignee").writeTristate[Long] and
+ (JsPath \ "assignee").writeTristate[String] and
(JsPath \ "meta").writeTristate(Writes[String](Json.parse))
) (unlift(ApiPartialDocument.unapply))
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/message/ApiMessage.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/message/ApiMessage.scala
index 05f9564..2591509 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/message/ApiMessage.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/message/ApiMessage.scala
@@ -9,7 +9,7 @@ import xyz.driver.pdsuidomain.entities.Message
final case class ApiMessage(id: Long,
text: String,
lastUpdate: ZonedDateTime,
- userId: Long,
+ userId: String,
isDraft: Boolean,
recordId: Option[Long],
documentId: Option[Long],
@@ -44,7 +44,7 @@ object ApiMessage {
(JsPath \ "id").format[Long] and
(JsPath \ "text").format[String] and
(JsPath \ "lastUpdate").format[ZonedDateTime] and
- (JsPath \ "userId").format[Long] and
+ (JsPath \ "userId").format[String] and
(JsPath \ "isDraft").format[Boolean] and
(JsPath \ "recordId").formatNullable[Long] and
(JsPath \ "documentId").formatNullable[Long] and
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/message/ApiPartialMessage.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/message/ApiPartialMessage.scala
index 88dd5a3..a2656f2 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/message/ApiPartialMessage.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/message/ApiPartialMessage.scala
@@ -18,7 +18,7 @@ final case class ApiPartialMessage(text: Option[String],
archiveRequired: Option[Boolean],
meta: Option[String]) {
- def toDomain(userId: LongId[User]) = Message(
+ def toDomain(userId: StringId[User]) = Message(
id = LongId(0),
text = text.getOrElse(""),
userId = userId,
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patient/ApiPatient.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patient/ApiPatient.scala
index 68e965c..05a57e4 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/patient/ApiPatient.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/patient/ApiPatient.scala
@@ -10,10 +10,10 @@ final case class ApiPatient(id: String,
status: String,
name: String,
dob: LocalDate,
- assignee: Option[Long],
+ assignee: Option[String],
previousStatus: Option[String],
- previousAssignee: Option[Long],
- lastActiveUser: Option[Long],
+ previousAssignee: Option[String],
+ lastActiveUser: Option[String],
lastUpdate: ZonedDateTime,
condition: String)
@@ -24,10 +24,10 @@ object ApiPatient {
(JsPath \ "status").format[String] and
(JsPath \ "name").format[String] and
(JsPath \ "dob").format[LocalDate] and
- (JsPath \ "assignee").formatNullable[Long] and
+ (JsPath \ "assignee").formatNullable[String] and
(JsPath \ "previousStatus").formatNullable[String] and
- (JsPath \ "previousAssignee").formatNullable[Long] and
- (JsPath \ "lastActiveUser").formatNullable[Long] and
+ (JsPath \ "previousAssignee").formatNullable[String] and
+ (JsPath \ "lastActiveUser").formatNullable[String] and
(JsPath \ "lastUpdate").format[ZonedDateTime] and
(JsPath \ "condition").format[String]
)(ApiPatient.apply, unlift(ApiPatient.unapply))
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiRecord.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiRecord.scala
index 4197bc6..0e0b4d9 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiRecord.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiRecord.scala
@@ -16,9 +16,9 @@ final case class ApiRecord(id: Long,
lastUpdate: ZonedDateTime,
status: String,
previousStatus: Option[String],
- assignee: Option[Long],
- previousAssignee: Option[Long],
- lastActiveUser: Option[Long],
+ assignee: Option[String],
+ previousAssignee: Option[String],
+ lastActiveUser: Option[String],
meta: String)
object ApiRecord {
@@ -40,9 +40,9 @@ object ApiRecord {
(JsPath \ "lastUpdate").format[ZonedDateTime] and
(JsPath \ "status").format(statusFormat) and
(JsPath \ "previousStatus").formatNullable(statusFormat) and
- (JsPath \ "assignee").formatNullable[Long] and
- (JsPath \ "previousAssignee").formatNullable[Long] and
- (JsPath \ "lastActiveUser").formatNullable[Long] and
+ (JsPath \ "assignee").formatNullable[String] and
+ (JsPath \ "previousAssignee").formatNullable[String] and
+ (JsPath \ "lastActiveUser").formatNullable[String] and
(JsPath \ "meta").format(Format(Reads { x =>
JsSuccess(Json.stringify(x))
}, Writes[String](Json.parse)))
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiUpdateRecord.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiUpdateRecord.scala
index 0d17b66..47bc493 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiUpdateRecord.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/record/ApiUpdateRecord.scala
@@ -1,21 +1,21 @@
package xyz.driver.pdsuidomain.formats.json.record
-import xyz.driver.pdsuidomain.entities.MedicalRecord.Meta
-import xyz.driver.pdsuidomain.entities._
-import xyz.driver.pdsuicommon.domain.{LongId, TextJson, User}
import org.davidbild.tristate.Tristate
import org.davidbild.tristate.contrib.play.ToJsPathOpsFromJsPath
import play.api.data.validation.ValidationError
import play.api.libs.functional.syntax._
import play.api.libs.json._
+import xyz.driver.pdsuicommon.domain.{StringId, TextJson, User}
import xyz.driver.pdsuicommon.json.JsonSerializer
+import xyz.driver.pdsuidomain.entities.MedicalRecord.Meta
+import xyz.driver.pdsuidomain.entities._
-final case class ApiUpdateRecord(status: Option[String], assignee: Tristate[Long], meta: Tristate[String]) {
+final case class ApiUpdateRecord(status: Option[String], assignee: Tristate[String], meta: Tristate[String]) {
def applyTo(orig: MedicalRecord): MedicalRecord = {
orig.copy(
status = status.map(MedicalRecordStatus.statusFromString).getOrElse(orig.status),
- assignee = assignee.map(LongId[User]).cata(Some(_), None, orig.assignee),
+ assignee = assignee.map(StringId[User]).cata(Some(_), None, orig.assignee),
meta = meta.cata(x => Some(TextJson(JsonSerializer.deserialize[List[Meta]](x))), None, orig.meta)
)
}
@@ -31,7 +31,7 @@ object ApiUpdateRecord {
case x if MedicalRecordStatus.statusFromString.isDefinedAt(x) => true
case _ => false
})) and
- (JsPath \ "assignee").readTristate[Long] and
+ (JsPath \ "assignee").readTristate[String] and
(JsPath \ "meta")
.readTristate(Reads { x =>
JsSuccess(Json.stringify(x))
@@ -44,7 +44,7 @@ object ApiUpdateRecord {
private val writes: Writes[ApiUpdateRecord] = (
(JsPath \ "status").writeNullable[String] and
- (JsPath \ "assignee").writeTristate[Long] and
+ (JsPath \ "assignee").writeTristate[String] and
(JsPath \ "meta").writeTristate(Writes[String](Json.parse))
)(unlift(ApiUpdateRecord.unapply))
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trial/ApiTrial.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trial/ApiTrial.scala
index 97bab5e..940f1f0 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trial/ApiTrial.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trial/ApiTrial.scala
@@ -10,10 +10,10 @@ import play.api.libs.json._
final case class ApiTrial(id: String,
lastUpdate: Option[ZonedDateTime],
status: String,
- assignee: Option[Long],
+ assignee: Option[String],
previousStatus: Option[String],
- previousAssignee: Option[Long],
- lastActiveUser: Option[Long],
+ previousAssignee: Option[String],
+ lastActiveUser: Option[String],
condition: Option[String],
phase: Option[String],
hypothesisId: Option[UUID],
@@ -30,10 +30,10 @@ object ApiTrial {
(JsPath \ "id").format[String] and
(JsPath \ "lastUpdate").formatNullable[ZonedDateTime] and
(JsPath \ "status").format[String] and
- (JsPath \ "assignee").formatNullable[Long] and
+ (JsPath \ "assignee").formatNullable[String] and
(JsPath \ "previousStatus").formatNullable[String] and
- (JsPath \ "previousAssignee").formatNullable[Long] and
- (JsPath \ "lastActiveUser").formatNullable[Long] and
+ (JsPath \ "previousAssignee").formatNullable[String] and
+ (JsPath \ "lastActiveUser").formatNullable[String] and
(JsPath \ "condition").formatNullable[String] and
(JsPath \ "phase").formatNullable[String] and
(JsPath \ "hypothesisId").formatNullable[UUID] and
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialhistory/ApiTrialHistory.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialhistory/ApiTrialHistory.scala
index 60f72a6..38faeb8 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialhistory/ApiTrialHistory.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialhistory/ApiTrialHistory.scala
@@ -6,7 +6,7 @@ import play.api.libs.json.{Format, Json}
import xyz.driver.pdsuidomain.entities.TrialHistory
final case class ApiTrialHistory(id: Long,
- executor: Long,
+ executor: String,
trialId: String,
state: String,
action: String,
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue/ApiPartialTrialIssue.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue/ApiPartialTrialIssue.scala
index 5dcde8a..fc31371 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue/ApiPartialTrialIssue.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue/ApiPartialTrialIssue.scala
@@ -15,7 +15,7 @@ final case class ApiPartialTrialIssue(text: String, evidence: String, archiveReq
meta = meta
)
- def toDomain(userId: LongId[User], trialId: StringId[Trial]) = TrialIssue(
+ def toDomain(userId: StringId[User], trialId: StringId[Trial]) = TrialIssue(
id = LongId(0),
userId = userId,
trialId = trialId,
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue/ApiTrialIssue.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue/ApiTrialIssue.scala
index a5399aa..852c4f6 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue/ApiTrialIssue.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trialissue/ApiTrialIssue.scala
@@ -9,7 +9,7 @@ import xyz.driver.pdsuidomain.entities.TrialIssue
final case class ApiTrialIssue(id: Long,
text: String,
lastUpdate: ZonedDateTime,
- userId: Long,
+ userId: String,
isDraft: Boolean,
evidence: String,
archiveRequired: Boolean,
@@ -20,7 +20,7 @@ object ApiTrialIssue {
(JsPath \ "id").format[Long] and
(JsPath \ "text").format[String] and
(JsPath \ "lastUpdate").format[ZonedDateTime] and
- (JsPath \ "userId").format[Long] and
+ (JsPath \ "userId").format[String] and
(JsPath \ "isDraft").format[Boolean] and
(JsPath \ "evidence").format[String] and
(JsPath \ "archiveRequired").format[Boolean] and
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/user/ApiPartialUser.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/user/ApiPartialUser.scala
index a37fea8..f31efb3 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/user/ApiPartialUser.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/user/ApiPartialUser.scala
@@ -1,6 +1,8 @@
package xyz.driver.pdsuidomain.formats.json.user
-import xyz.driver.pdsuicommon.domain.{Email, LongId, PasswordHash, User}
+import java.util.UUID
+
+import xyz.driver.pdsuicommon.domain._
import play.api.data.validation._
import play.api.libs.functional.syntax._
import play.api.libs.json._
@@ -29,7 +31,7 @@ final case class ApiPartialUser(email: Option[String], name: Option[String], rol
}
}
- def toDomain(id: LongId[User] = LongId(0L)): Try[User] = Try {
+ def toDomain(id: StringId[User] = StringId(UUID.randomUUID().toString)): Try[User] = Try {
val validation = Map(
JsPath \ "email" -> AdditionalConstraints.optionNonEmptyConstraint(email),
JsPath \ "name" -> AdditionalConstraints.optionNonEmptyConstraint(name),
@@ -62,7 +64,7 @@ object ApiPartialUser {
implicit val format: Format[ApiPartialUser] = (
(JsPath \ "email").formatNullable[String](Format(Reads.email, Writes.StringWrites)) and
(JsPath \ "name").formatNullable[String](Format(
- Reads.filterNot[String](ValidationError("Username is too long (max length is 255 chars)", 255))(_.size > 255),
+ Reads.filterNot[String](ValidationError("Username is too long (max length is 255 chars)", 255))(_.length > 255),
Writes.StringWrites
)) and
(JsPath \ "roleId").formatNullable[String](
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/user/ApiUser.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/user/ApiUser.scala
index 29138ed..8dbedfe 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/user/ApiUser.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/user/ApiUser.scala
@@ -7,12 +7,16 @@ import play.api.data.validation.ValidationError
import play.api.libs.functional.syntax._
import play.api.libs.json._
-final case class ApiUser(id: Long, email: String, name: String, roleId: String, latestActivity: Option[ZonedDateTime])
+final case class ApiUser(id: String,
+ email: String,
+ name: String,
+ roleId: String,
+ latestActivity: Option[ZonedDateTime])
object ApiUser {
implicit val format: Format[ApiUser] = (
- (JsPath \ "id").format[Long] and
+ (JsPath \ "id").format[String] and
(JsPath \ "email").format[String](Reads.email) and
(JsPath \ "name").format[String] and
(JsPath \ "roleId").format[String](
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/userhistory/ApiUserHistory.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/userhistory/ApiUserHistory.scala
index 2d0df80..127337f 100644
--- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/userhistory/ApiUserHistory.scala
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/userhistory/ApiUserHistory.scala
@@ -7,7 +7,7 @@ import play.api.libs.json.{Format, JsPath}
import xyz.driver.pdsuidomain.entities.UserHistory
final case class ApiUserHistory(id: Long,
- executor: Long,
+ executor: String,
recordId: Option[Long],
documentId: Option[Long],
trialId: Option[String],
@@ -19,7 +19,7 @@ final case class ApiUserHistory(id: Long,
object ApiUserHistory {
implicit val format: Format[ApiUserHistory] = (
(JsPath \ "id").format[Long] and
- (JsPath \ "executor").format[Long] and
+ (JsPath \ "executor").format[String] and
(JsPath \ "recordId").formatNullable[Long] and
(JsPath \ "documentId").formatNullable[Long] and
(JsPath \ "trialId").formatNullable[String] and