{
  "modelspec": "1.0-draft",
  "module": {
    "id": "github.com/demo-db/pubs/pubs",
    "name": "pubs",
    "version": "0.1.0"
  },
  "entities": {
    "authors": {
      "key": [
        "au_id"
      ],
      "properties": {
        "au_id": {
          "required": true,
          "type": "string"
        },
        "au_lname": {
          "required": true,
          "type": "string"
        },
        "au_fname": {
          "required": true,
          "type": "string"
        },
        "phone": {
          "required": true,
          "type": "string"
        },
        "address": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "zip": {
          "type": "string"
        },
        "contract": {
          "required": true,
          "type": "int"
        }
      }
    },
    "discounts": {
      "properties": {
        "discounttype": {
          "required": true,
          "type": "string"
        },
        "stor_id": {
          "entity": "stores"
        },
        "lowqty": {
          "type": "int"
        },
        "highqty": {
          "type": "int"
        },
        "discount": {
          "required": true,
          "type": "decimal"
        }
      }
    },
    "employee": {
      "key": [
        "emp_id"
      ],
      "properties": {
        "emp_id": {
          "required": true,
          "type": "string"
        },
        "fname": {
          "required": true,
          "type": "string"
        },
        "minit": {
          "type": "string"
        },
        "lname": {
          "required": true,
          "type": "string"
        },
        "job_id": {
          "required": true,
          "entity": "jobs"
        },
        "job_lvl": {
          "type": "int"
        },
        "pub_id": {
          "required": true,
          "entity": "publishers"
        },
        "hire_date": {
          "required": true,
          "type": "string"
        }
      }
    },
    "jobs": {
      "key": [
        "job_id"
      ],
      "properties": {
        "job_id": {
          "required": true,
          "type": "int"
        },
        "job_desc": {
          "required": true,
          "type": "string"
        },
        "min_lvl": {
          "required": true,
          "type": "int"
        },
        "max_lvl": {
          "required": true,
          "type": "int"
        }
      }
    },
    "pub_info": {
      "key": [
        "pub_id"
      ],
      "properties": {
        "pub_id": {
          "required": true,
          "entity": "publishers"
        },
        "logo": {
          "type": "document"
        },
        "pr_info": {
          "type": "string"
        }
      }
    },
    "publishers": {
      "key": [
        "pub_id"
      ],
      "properties": {
        "pub_id": {
          "required": true,
          "type": "string"
        },
        "pub_name": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "country": {
          "type": "string"
        }
      }
    },
    "roysched": {
      "properties": {
        "title_id": {
          "entity": "titles"
        },
        "lorange": {
          "type": "int"
        },
        "hirange": {
          "type": "int"
        },
        "royalty": {
          "type": "int"
        }
      }
    },
    "sales": {
      "key": [
        "stor_id",
        "ord_num",
        "title_id"
      ],
      "properties": {
        "stor_id": {
          "required": true,
          "entity": "stores"
        },
        "ord_num": {
          "required": true,
          "type": "string"
        },
        "ord_date": {
          "required": true,
          "type": "string"
        },
        "qty": {
          "required": true,
          "type": "int"
        },
        "payterms": {
          "required": true,
          "type": "string"
        },
        "title_id": {
          "required": true,
          "entity": "titles"
        }
      }
    },
    "stores": {
      "key": [
        "stor_id"
      ],
      "properties": {
        "stor_id": {
          "required": true,
          "type": "string"
        },
        "stor_name": {
          "type": "string"
        },
        "stor_address": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "zip": {
          "type": "string"
        }
      }
    },
    "titleauthor": {
      "key": [
        "au_id",
        "title_id"
      ],
      "properties": {
        "au_id": {
          "required": true,
          "entity": "authors"
        },
        "title_id": {
          "required": true,
          "entity": "titles"
        },
        "au_ord": {
          "type": "int"
        },
        "royaltyper": {
          "type": "int"
        }
      }
    },
    "titles": {
      "key": [
        "title_id"
      ],
      "properties": {
        "title_id": {
          "required": true,
          "type": "string"
        },
        "title": {
          "required": true,
          "type": "string"
        },
        "type": {
          "required": true,
          "type": "string"
        },
        "pub_id": {
          "entity": "publishers"
        },
        "price": {
          "type": "decimal"
        },
        "advance": {
          "type": "decimal"
        },
        "royalty": {
          "type": "int"
        },
        "ytd_sales": {
          "type": "int"
        },
        "notes": {
          "type": "string"
        },
        "pubdate": {
          "required": true,
          "type": "string"
        }
      }
    }
  }
}
