masonite-orm 2.22.0__tar.gz → 2.22.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. {masonite-orm-2.22.0/src/masonite_orm.egg-info → masonite-orm-2.22.2}/PKG-INFO +1 -1
  2. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/setup.py +1 -1
  3. {masonite-orm-2.22.0 → masonite-orm-2.22.2/src/masonite_orm.egg-info}/PKG-INFO +1 -1
  4. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/connections/BaseConnection.py +9 -0
  5. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/connections/MSSQLConnection.py +2 -0
  6. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/connections/MySQLConnection.py +3 -0
  7. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/connections/PostgresConnection.py +2 -0
  8. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/connections/SQLiteConnection.py +3 -0
  9. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/query/QueryBuilder.py +1 -1
  10. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/relationships/BaseRelationship.py +1 -1
  11. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/schema/platforms/MySQLPlatform.py +7 -2
  12. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/schema/platforms/PostgresPlatform.py +15 -3
  13. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/schema/platforms/SQLitePlatform.py +12 -1
  14. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/MANIFEST.in +0 -0
  15. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/README.md +0 -0
  16. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/setup.cfg +0 -0
  17. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masonite_orm.egg-info/SOURCES.txt +0 -0
  18. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masonite_orm.egg-info/dependency_links.txt +0 -0
  19. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masonite_orm.egg-info/entry_points.txt +0 -0
  20. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masonite_orm.egg-info/requires.txt +0 -0
  21. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masonite_orm.egg-info/top_level.txt +0 -0
  22. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/__init__.py +0 -0
  23. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/collection/Collection.py +0 -0
  24. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/collection/__init__.py +0 -0
  25. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/CanOverrideConfig.py +0 -0
  26. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/CanOverrideOptionsDefault.py +0 -0
  27. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/Command.py +0 -0
  28. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/Entry.py +0 -0
  29. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/MakeMigrationCommand.py +0 -0
  30. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/MakeModelCommand.py +0 -0
  31. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/MakeModelDocstringCommand.py +0 -0
  32. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/MakeObserverCommand.py +0 -0
  33. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/MakeSeedCommand.py +0 -0
  34. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/MigrateCommand.py +0 -0
  35. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/MigrateFreshCommand.py +0 -0
  36. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/MigrateRefreshCommand.py +0 -0
  37. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/MigrateResetCommand.py +0 -0
  38. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/MigrateRollbackCommand.py +0 -0
  39. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/MigrateStatusCommand.py +0 -0
  40. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/SeedRunCommand.py +0 -0
  41. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/ShellCommand.py +0 -0
  42. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/__init__.py +0 -0
  43. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/stubs/create_migration.stub +0 -0
  44. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/stubs/create_seed.stub +0 -0
  45. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/stubs/model.stub +0 -0
  46. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/stubs/observer.stub +0 -0
  47. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/commands/stubs/table_migration.stub +0 -0
  48. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/config.py +0 -0
  49. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/connections/ConnectionFactory.py +0 -0
  50. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/connections/ConnectionResolver.py +0 -0
  51. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/connections/__init__.py +0 -0
  52. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/exceptions.py +0 -0
  53. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/expressions/__init__.py +0 -0
  54. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/expressions/expressions.py +0 -0
  55. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/factories/Factory.py +0 -0
  56. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/factories/__init__.py +0 -0
  57. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/helpers/__init__.py +0 -0
  58. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/helpers/misc.py +0 -0
  59. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/migrations/Migration.py +0 -0
  60. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/migrations/__init__.py +0 -0
  61. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/models/MigrationModel.py +0 -0
  62. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/models/Model.py +0 -0
  63. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/models/Pivot.py +0 -0
  64. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/models/__init__.py +0 -0
  65. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/observers/ObservesEvents.py +0 -0
  66. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/observers/__init__.py +0 -0
  67. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/pagination/BasePaginator.py +0 -0
  68. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/pagination/LengthAwarePaginator.py +0 -0
  69. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/pagination/SimplePaginator.py +0 -0
  70. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/pagination/__init__.py +0 -0
  71. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/providers/ORMProvider.py +0 -0
  72. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/providers/__init__.py +0 -0
  73. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/query/EagerRelation.py +0 -0
  74. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/query/__init__.py +0 -0
  75. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/query/grammars/BaseGrammar.py +0 -0
  76. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/query/grammars/MSSQLGrammar.py +0 -0
  77. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/query/grammars/MySQLGrammar.py +0 -0
  78. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/query/grammars/PostgresGrammar.py +0 -0
  79. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/query/grammars/SQLiteGrammar.py +0 -0
  80. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/query/grammars/__init__.py +0 -0
  81. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/query/processors/MSSQLPostProcessor.py +0 -0
  82. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/query/processors/MySQLPostProcessor.py +0 -0
  83. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/query/processors/PostgresPostProcessor.py +0 -0
  84. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/query/processors/SQLitePostProcessor.py +0 -0
  85. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/query/processors/__init__.py +0 -0
  86. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/relationships/BelongsTo.py +0 -0
  87. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/relationships/BelongsToMany.py +0 -0
  88. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/relationships/HasMany.py +0 -0
  89. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/relationships/HasManyThrough.py +0 -0
  90. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/relationships/HasOne.py +0 -0
  91. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/relationships/HasOneThrough.py +0 -0
  92. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/relationships/MorphMany.py +0 -0
  93. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/relationships/MorphOne.py +0 -0
  94. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/relationships/MorphTo.py +0 -0
  95. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/relationships/MorphToMany.py +0 -0
  96. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/relationships/__init__.py +0 -0
  97. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/schema/Blueprint.py +0 -0
  98. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/schema/Column.py +0 -0
  99. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/schema/ColumnDiff.py +0 -0
  100. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/schema/Constraint.py +0 -0
  101. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/schema/ForeignKeyConstraint.py +0 -0
  102. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/schema/Index.py +0 -0
  103. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/schema/Schema.py +0 -0
  104. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/schema/Table.py +0 -0
  105. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/schema/TableDiff.py +0 -0
  106. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/schema/__init__.py +0 -0
  107. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/schema/platforms/MSSQLPlatform.py +0 -0
  108. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/schema/platforms/Platform.py +0 -0
  109. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/schema/platforms/__init__.py +0 -0
  110. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/scopes/BaseScope.py +0 -0
  111. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/scopes/SoftDeleteScope.py +0 -0
  112. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/scopes/SoftDeletesMixin.py +0 -0
  113. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/scopes/TimeStampsMixin.py +0 -0
  114. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/scopes/TimeStampsScope.py +0 -0
  115. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/scopes/UUIDPrimaryKeyMixin.py +0 -0
  116. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/scopes/UUIDPrimaryKeyScope.py +0 -0
  117. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/scopes/__init__.py +0 -0
  118. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/scopes/scope.py +0 -0
  119. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/seeds/Seeder.py +0 -0
  120. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/seeds/__init__.py +0 -0
  121. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/testing/BaseTestCaseSelectGrammar.py +0 -0
  122. {masonite-orm-2.22.0 → masonite-orm-2.22.2}/src/masoniteorm/testing/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: masonite-orm
3
- Version: 2.22.0
3
+ Version: 2.22.2
4
4
  Summary: The Official Masonite ORM
5
5
  Home-page: https://github.com/masoniteframework/orm
6
6
  Author: Joe Mancuso
@@ -8,7 +8,7 @@ setup(
8
8
  # Versions should comply with PEP440. For a discussion on single-sourcing
9
9
  # the version across setup.py and the project code, see
10
10
  # https://packaging.python.org/en/latest/single_source_version.html
11
- version="2.22.0",
11
+ version="2.22.2",
12
12
  package_dir={"": "src"},
13
13
  description="The Official Masonite ORM",
14
14
  long_description=long_description,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: masonite-orm
3
- Version: 2.22.0
3
+ Version: 2.22.2
4
4
  Summary: The Official Masonite ORM
5
5
  Home-page: https://github.com/masoniteframework/orm
6
6
  Author: Joe Mancuso
@@ -76,3 +76,12 @@ class BaseConnection:
76
76
  yield result
77
77
 
78
78
  result = self.format_cursor_results(self._cursor.fetchmany(amount))
79
+
80
+ def enable_disable_foreign_keys(self):
81
+ foreign_keys = self.full_details.get("foreign_keys")
82
+ platform = self.get_default_platform()()
83
+
84
+ if foreign_keys:
85
+ self._connection.execute(platform.enable_foreign_key_constraints())
86
+ elif foreign_keys is not None:
87
+ self._connection.execute(platform.disable_foreign_key_constraints())
@@ -70,6 +70,8 @@ class MSSQLConnection(BaseConnection):
70
70
  autocommit=True,
71
71
  )
72
72
 
73
+ self.enable_disable_foreign_keys()
74
+
73
75
  self.open = 1
74
76
  return self
75
77
 
@@ -78,6 +78,9 @@ class MySQLConnection(BaseConnection):
78
78
  db=self.database,
79
79
  **self.options
80
80
  )
81
+
82
+ self.enable_disable_foreign_keys()
83
+
81
84
  self.open = 1
82
85
 
83
86
  return self
@@ -69,6 +69,8 @@ class PostgresConnection(BaseConnection):
69
69
 
70
70
  self._connection.autocommit = True
71
71
 
72
+ self.enable_disable_foreign_keys()
73
+
72
74
  self.open = 1
73
75
 
74
76
  return self
@@ -63,6 +63,9 @@ class SQLiteConnection(BaseConnection):
63
63
  self._connection.create_function("REGEXP", 2, regexp)
64
64
 
65
65
  self._connection.row_factory = sqlite3.Row
66
+
67
+ self.enable_disable_foreign_keys()
68
+
66
69
  self.open = 1
67
70
 
68
71
  return self
@@ -1957,7 +1957,7 @@ class QueryBuilder(ObservesEvents):
1957
1957
  if isinstance(related_result, Collection):
1958
1958
  related.register_related(relation_key, model, map_related)
1959
1959
  else:
1960
- model.add_relation({relation_key: related_result or None})
1960
+ model.add_relation({relation_key: map_related or None})
1961
1961
  else:
1962
1962
  hydrated_model.add_relation({relation_key: related_result or None})
1963
1963
  return self
@@ -52,7 +52,7 @@ class BaseRelationship:
52
52
  object -- Either returns a builder or a hydrated model.
53
53
  """
54
54
  attribute = self.fn.__name__
55
- relationship = self.fn(self)()
55
+ relationship = self.fn(instance)()
56
56
  self.set_keys(instance, attribute)
57
57
  self._related_builder = relationship.builder
58
58
 
@@ -176,11 +176,16 @@ class MySQLPlatform(Platform):
176
176
  else:
177
177
  default = ""
178
178
 
179
+ column_constraint = ""
180
+ if column.column_type == "enum":
181
+ values = ", ".join(f"'{x}'" for x in column.values)
182
+ column_constraint = f"({values})"
179
183
  add_columns.append(
180
184
  self.add_column_string()
181
185
  .format(
182
186
  name=self.get_column_string().format(column=column.name),
183
187
  data_type=self.type_map.get(column.column_type, ""),
188
+ column_constraint=column_constraint,
184
189
  length=length,
185
190
  constraint="PRIMARY KEY" if column.primary else "",
186
191
  nullable="NULL" if column.is_null else "NOT NULL",
@@ -333,14 +338,14 @@ class MySQLPlatform(Platform):
333
338
 
334
339
  def add_column_string(self):
335
340
  return (
336
- "ADD {name} {data_type}{length}{signed} {nullable}{default}{after}{comment}"
341
+ "ADD {name} {data_type}{length}{column_constraint}{signed} {nullable}{default}{after}{comment}"
337
342
  )
338
343
 
339
344
  def drop_column_string(self):
340
345
  return "DROP COLUMN {name}"
341
346
 
342
347
  def change_column_string(self):
343
- return "MODIFY {name}{data_type}{length} {nullable}{default} {constraint}"
348
+ return "MODIFY {name}{data_type}{length}{column_constraint} {nullable}{default} {constraint}"
344
349
 
345
350
  def rename_column_string(self):
346
351
  return "CHANGE {old} {to}"
@@ -194,6 +194,11 @@ class PostgresPlatform(Platform):
194
194
  else:
195
195
  default = ""
196
196
 
197
+ column_constraint = ""
198
+ if column.column_type == "enum":
199
+ values = ", ".join(f"'{x}'" for x in column.values)
200
+ column_constraint = f" CHECK({column.name} IN ({values}))"
201
+
197
202
  add_columns.append(
198
203
  self.add_column_string()
199
204
  .format(
@@ -201,6 +206,7 @@ class PostgresPlatform(Platform):
201
206
  data_type=self.type_map.get(column.column_type, ""),
202
207
  length=length,
203
208
  constraint="PRIMARY KEY" if column.primary else "",
209
+ column_constraint=column_constraint,
204
210
  nullable="NULL" if column.is_null else "NOT NULL",
205
211
  default=default,
206
212
  after=(" AFTER " + self.wrap_column(column._after))
@@ -263,12 +269,18 @@ class PostgresPlatform(Platform):
263
269
  changed_sql = []
264
270
 
265
271
  for name, column in table.changed_columns.items():
272
+
273
+ column_constraint = ""
274
+ if column.column_type == "enum":
275
+ values = ", ".join(f"'{x}'" for x in column.values)
276
+ column_constraint = f" CHECK({column.name} IN ({values}))"
266
277
  changed_sql.append(
267
278
  self.modify_column_string()
268
279
  .format(
269
280
  name=self.wrap_column(name),
270
281
  data_type=self.type_map.get(column.column_type),
271
- nullable="NULL" if column.is_null else "NOT NULL",
282
+ column_constraint=column_constraint,
283
+ constraint="PRIMARY KEY" if column.primary else "",
272
284
  length="(" + str(column.length) + ")"
273
285
  if column.column_type not in self.types_without_lengths
274
286
  else "",
@@ -380,13 +392,13 @@ class PostgresPlatform(Platform):
380
392
  return "ALTER TABLE {table} {columns}"
381
393
 
382
394
  def add_column_string(self):
383
- return "ADD COLUMN {name} {data_type}{length} {nullable}{default} {constraint}"
395
+ return "ADD COLUMN {name} {data_type}{length}{column_constraint} {nullable}{default} {constraint}"
384
396
 
385
397
  def drop_column_string(self):
386
398
  return "DROP COLUMN {name}"
387
399
 
388
400
  def modify_column_string(self):
389
- return "ALTER COLUMN {name} TYPE {data_type}{length}"
401
+ return "ALTER COLUMN {name} TYPE {data_type}{length}{column_constraint} {constraint}"
390
402
 
391
403
  def rename_column_string(self):
392
404
  return "RENAME COLUMN {old} TO {to}"
@@ -171,15 +171,21 @@ class SQLitePlatform(Platform):
171
171
  else:
172
172
  default = ""
173
173
  constraint = ""
174
+ column_constraint = ""
174
175
  if column.name in diff.added_foreign_keys:
175
176
  foreign_key = diff.added_foreign_keys[column.name]
176
177
  constraint = f" REFERENCES {self.wrap_table(foreign_key.foreign_table)}({self.wrap_column(foreign_key.foreign_column)})"
178
+ if column.column_type == "enum":
179
+ values = ", ".join(f"'{x}'" for x in column.values)
180
+ column_constraint = f" CHECK('{column.name}' IN({values}))"
177
181
 
178
182
  sql.append(
179
- "ALTER TABLE {table} ADD COLUMN {name} {data_type}{signed} {nullable}{default}{constraint}".format(
183
+ self.add_column_string()
184
+ .format(
180
185
  table=self.wrap_table(diff.name),
181
186
  name=self.wrap_column(column.name),
182
187
  data_type=self.type_map.get(column.column_type, ""),
188
+ column_constraint=column_constraint,
183
189
  nullable="NULL" if column.is_null else "NOT NULL",
184
190
  default=default,
185
191
  signed=" " + self.signed.get(column._signed)
@@ -291,6 +297,11 @@ class SQLitePlatform(Platform):
291
297
  def get_column_string(self):
292
298
  return '"{column}"'
293
299
 
300
+ def add_column_string(self):
301
+ return (
302
+ "ALTER TABLE {table} ADD COLUMN {name} {data_type}{column_constraint}{signed} {nullable}{default}{constraint}"
303
+ )
304
+
294
305
  def create_column_length(self, column_type):
295
306
  if column_type in self.types_without_lengths:
296
307
  return ""
File without changes
File without changes
File without changes