{
  "schemaVersion": "0.1",
  "errorPolicy": "allOrNothing",
  "revisionMessage": "Initial blog ER schema: users, posts, comments, tags",
  "ops": [
    {
      "op": "createNode",
      "id": "user",
      "nodeType": "er.entity",
      "shape": "rect",
      "label": "Users",
      "extensions": {
        "columns": [
          { "name": "id", "type": "int", "pk": true },
          { "name": "username", "type": "varchar" },
          { "name": "email", "type": "varchar" },
          { "name": "created_at", "type": "timestamp" }
        ]
      }
    },
    {
      "op": "createNode",
      "id": "post",
      "nodeType": "er.entity",
      "shape": "rect",
      "label": "Posts",
      "extensions": {
        "columns": [
          { "name": "id", "type": "int", "pk": true },
          { "name": "author_id", "type": "int", "fk": true },
          { "name": "title", "type": "varchar" },
          { "name": "body", "type": "text" }
        ]
      }
    },
    {
      "op": "createNode",
      "id": "comment",
      "nodeType": "er.entity",
      "shape": "rect",
      "label": "Comments",
      "extensions": {
        "columns": [
          { "name": "id", "type": "int", "pk": true },
          { "name": "post_id", "type": "int", "fk": true },
          { "name": "user_id", "type": "int", "fk": true },
          { "name": "body", "type": "text" }
        ]
      }
    },
    {
      "op": "createNode",
      "id": "tag",
      "nodeType": "er.entity",
      "shape": "rect",
      "label": "Tags",
      "extensions": {
        "columns": [
          { "name": "id", "type": "int", "pk": true },
          { "name": "name", "type": "varchar" }
        ]
      }
    },
    {
      "op": "createEdge",
      "id": "e-writes",
      "edgeType": "er.relationship",
      "from": { "elementId": "post", "column": "author_id" },
      "to": { "elementId": "user" },
      "router": "orthogonal"
    },
    {
      "op": "createEdge",
      "id": "e-comments",
      "edgeType": "er.relationship",
      "from": { "elementId": "comment", "column": "user_id" },
      "to": { "elementId": "user" },
      "router": "orthogonal"
    },
    {
      "op": "createEdge",
      "id": "e-has-comments",
      "edgeType": "er.relationship",
      "from": { "elementId": "comment", "column": "post_id" },
      "to": { "elementId": "post" },
      "router": "orthogonal"
    },
    {
      "op": "createEdge",
      "id": "e-tagged",
      "edgeType": "er.relationship",
      "from": { "elementId": "post" },
      "to": { "elementId": "tag", "cardinality": "many" },
      "router": "orthogonal",
      "label": "tagged"
    }
  ]
}
