// Partial implementation of Cassandra Hotel Schema described here::
//  https://www.oreilly.com/ideas/cassandra-data-modeling
{
    "name": "Microsoft.Azure.Cosmos.Serialization.HybridRow.Tests.Perf.CassandraHotel",
    "schemas": [
    {
      "name": "PostalCode",
      "id": 1,
      "type": "schema",
      "properties": [
        { "path": "zip", "type": { "type": "int32", "storage": "fixed" } },
        { "path": "plus4", "type": { "type": "int16", "storage": "sparse" } }
      ]
    },
    {
      "name": "Address",
      "id": 2,
      "type": "schema",
      "properties": [
        { "path": "street", "type": { "type": "utf8", "storage": "variable" } },
        { "path": "city", "type": { "type": "utf8", "storage": "variable" } },
        { "path": "state", "type": { "type": "utf8", "storage": "fixed", "length": 2 } },
        { "path": "postal_code", "type": { "type": "schema", "name": "PostalCode" } }
      ]
    },
    {
      "name": "Hotels",
      "id": 3,
      "type": "schema",
      "partitionkeys": [{ "path": "hotel_id" }],
      "properties": [
        { "path": "hotel_id", "type": { "type": "utf8", "storage": "fixed", "length": 8 } },
        { "path": "name", "type": { "type": "utf8", "storage": "variable" } },
        { "path": "phone", "type": { "type": "utf8", "storage": "variable" } },
        { "path": "address", "type": { "type": "schema", "name": "Address", "immutable": true } }
      ]
    },
    {
      "name": "Available_Rooms_By_Hotel_Date",
      "id": 4,
      "type": "schema",
      "partitionkeys": [{ "path": "hotel_id" }],
      "primarykeys": [{ "path": "date" }, { "path": "room_number", "direction": "desc" }],
      "properties": [
        { "path": "hotel_id", "type": { "type": "utf8", "storage": "fixed", "length": 8 } },
        { "path": "date", "type": { "type": "datetime", "storage": "fixed" } },
        { "path": "room_number", "type": { "type": "uint8", "storage": "fixed" } },
        { "path": "is_available", "type": { "type": "bool", "storage": "fixed" } }
      ]
    },
    {
      "name": "Guests",
      "id": 5,
      "type": "schema",
      "partitionkeys": [{ "path": "guest_id" }],
      "primarykeys": [{"path": "first_name"}, {"path": "phone_numbers", "direction": "desc"}],
            "properties": [
        { "path": "guest_id", "type": { "type": "guid", "storage": "fixed" } },
        { "path": "first_name", "type": { "type": "utf8", "storage": "variable" } },
        { "path": "last_name", "type": { "type": "utf8", "storage": "variable" } },
        { "path": "title", "type": { "type": "utf8", "storage": "variable", "length": 20 } },
        { "path": "emails", "type": { "type": "array", "items": { "type": "utf8", "nullable": false } } },
        { "path": "phone_numbers", "type": { "type": "array", "items": { "type": "utf8", "nullable": false } } },
        {
          "path": "addresses",
          "type": {
            "type": "map",
            "keys": { "type": "utf8", "nullable": false },
            "values": { "type": "schema", "name": "Address", "immutable": true, "nullable": false }
          }
        },
        { "path": "confirm_number", "type": { "type": "utf8", "storage": "variable" } }
      ]
    }
  ]
}
