schema.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. """This schema is written by the Udacity lecturers.
  2. It defines the schema for nodes, nodes_tags, ways, ways_tags,
  3. and ways_nodes tables for the database.
  4. """
  5. schema = {
  6. 'node': {
  7. 'type': 'dict',
  8. 'schema': {
  9. 'id': {'required': True, 'type': 'integer', 'coerce': int},
  10. 'lat': {'required': True, 'type': 'float', 'coerce': float},
  11. 'lon': {'required': True, 'type': 'float', 'coerce': float},
  12. 'user': {'required': True, 'type': 'string'},
  13. 'uid': {'required': True, 'type': 'integer', 'coerce': int},
  14. 'version': {'required': True, 'type': 'string'},
  15. 'changeset': {'required': True, 'type': 'integer', 'coerce': int},
  16. 'timestamp': {'required': True, 'type': 'string'}
  17. }
  18. },
  19. 'node_tags': {
  20. 'type': 'list',
  21. 'schema': {
  22. 'type': 'dict',
  23. 'schema': {
  24. 'id': {'required': True, 'type': 'integer', 'coerce': int},
  25. 'key': {'required': True, 'type': 'string'},
  26. 'value': {'required': True, 'type': 'string'},
  27. 'type': {'required': True, 'type': 'string'}
  28. }
  29. }
  30. },
  31. 'way': {
  32. 'type': 'dict',
  33. 'schema': {
  34. 'id': {'required': True, 'type': 'integer', 'coerce': int},
  35. 'user': {'required': True, 'type': 'string'},
  36. 'uid': {'required': True, 'type': 'integer', 'coerce': int},
  37. 'version': {'required': True, 'type': 'string'},
  38. 'changeset': {'required': True, 'type': 'integer', 'coerce': int},
  39. 'timestamp': {'required': True, 'type': 'string'}
  40. }
  41. },
  42. 'way_nodes': {
  43. 'type': 'list',
  44. 'schema': {
  45. 'type': 'dict',
  46. 'schema': {
  47. 'id': {'required': True, 'type': 'integer', 'coerce': int},
  48. 'node_id': {'required': True, 'type': 'integer', 'coerce': int},
  49. 'position': {'required': True, 'type': 'integer', 'coerce': int}
  50. }
  51. }
  52. },
  53. 'way_tags': {
  54. 'type': 'list',
  55. 'schema': {
  56. 'type': 'dict',
  57. 'schema': {
  58. 'id': {'required': True, 'type': 'integer', 'coerce': int},
  59. 'key': {'required': True, 'type': 'string'},
  60. 'value': {'required': True, 'type': 'string'},
  61. 'type': {'required': True, 'type': 'string'}
  62. }
  63. }
  64. }
  65. }