Docs / EventSourcingDB / Errors / precondition-type-missing

precondition-type-missing

A precondition leaves out its type.

  • Route: write-events
  • Description: precondition type is missing: expected 'isSubjectPristine', 'isSubjectPopulated', 'isSubjectOnEventId', or 'isEventQlQueryTrue'
  • Details: precondition, the place of the precondition in its list, counting from 0.

Why It Happens#

Every precondition names its type, which says what it checks and which values its payload holds. A precondition without a type, or with an empty string as its type, cannot be checked, such as one that was built from its payload alone, as in { "payload": { "subject": "/books/42" } }.

The preconditions are checked after the events of the write, one after the other, so the error names the first that leaves out its type. A type that is given but does not exist is reported as precondition-unknown instead, and a type that is null is rejected with 400 Bad Request, since the body then does not have the shape the route expects.

How to Fix It#

Give every precondition one of the four types: isSubjectPristine, isSubjectPopulated, isSubjectOnEventId, or isEventQlQueryTrue. Sending the same request again fails the same way, since the error depends on the request alone.

Example#

For a write whose only precondition leaves out its type, EventSourcingDB answers with this error, as a line of the stream, and then ends the stream with its end item:

{
  "type": "error",
  "data": {
    "code": "https://docs.eventsourcingdb.io/errors/precondition-type-missing",
    "description": "precondition type is missing: expected 'isSubjectPristine', 'isSubjectPopulated', 'isSubjectOnEventId', or 'isEventQlQueryTrue'",
    "details": {
      "precondition": 0
    }
  }
}