Skip to content

Commit 0524421

Browse files
Merge pull request #883 from martinszemitis/2.0
Add configuration option to enable or disable foreign keys check for all 4 types of database connections
2 parents c9e7617 + 2916fc4 commit 0524421

File tree

6 files changed

+21
-1
lines changed

6 files changed

+21
-1
lines changed

src/masoniteorm/connections/BaseConnection.py

+10
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,13 @@ def select_many(self, query, bindings, amount):
7676
yield result
7777

7878
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())
88+

src/masoniteorm/connections/MSSQLConnection.py

+2
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ def make_connection(self):
7070
autocommit=True,
7171
)
7272

73+
self.enable_disable_foreign_keys()
74+
7375
self.open = 1
7476
return self
7577

src/masoniteorm/connections/MySQLConnection.py

+3
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ def make_connection(self):
7878
db=self.database,
7979
**self.options
8080
)
81+
82+
self.enable_disable_foreign_keys()
83+
8184
self.open = 1
8285

8386
return self

src/masoniteorm/connections/PostgresConnection.py

+2
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ def make_connection(self):
6969

7070
self._connection.autocommit = True
7171

72+
self.enable_disable_foreign_keys()
73+
7274
self.open = 1
7375

7476
return self

src/masoniteorm/connections/SQLiteConnection.py

+3
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ def make_connection(self):
6363
self._connection.create_function("REGEXP", 2, regexp)
6464

6565
self._connection.row_factory = sqlite3.Row
66+
67+
self.enable_disable_foreign_keys()
68+
6669
self.open = 1
6770

6871
return self

tests/integrations/config/database.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
"log_queries": True,
3939
"propagate": False,
4040
},
41-
"t": {"driver": "sqlite", "database": "orm.sqlite3", "log_queries": True},
41+
"t": {"driver": "sqlite", "database": "orm.sqlite3", "log_queries": True, "foreign_keys": True},
4242
"devprod": {
4343
"driver": "mysql",
4444
"host": os.getenv("MYSQL_DATABASE_HOST"),

0 commit comments

Comments
 (0)