safeshield 1.5.4__py3-none-any.whl → 1.5.6__py3-none-any.whl

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: safeshield
3
- Version: 1.5.4
3
+ Version: 1.5.6
4
4
  Summary: Library for Help Validation Control
5
5
  Home-page: https://github.com/WunsunTarniho/py-guard
6
6
  Author: Wunsun Tarniho
@@ -5,12 +5,12 @@ validator/core/__init__.py,sha256=ZcqlXJSk03i_CVzmIN-nVe1UOyvwwO5jhbEj7f62Y_o,59
5
5
  validator/core/validator.py,sha256=bE8T4N9vl4bNYPUgEa9nbTGAaTutb8qVWuRsjMd-ssk,12688
6
6
  validator/database/__init__.py,sha256=O-cB6-MhNapJ3iwe5jvifbMfr1dPjXLtEdfNTKIu0hc,171
7
7
  validator/database/detector.py,sha256=Vac7oVL26GjU6expGo01-6mgUtXqldr-jirzpYokZBM,9597
8
- validator/database/manager.py,sha256=XJM_I0WaWfZWV710duAc32p1gtiP2or-MAj75WPw1oM,6478
8
+ validator/database/manager.py,sha256=QD_vmsE36LnTHANTPf63ICxEqfWym9cPI-uWEXYrvr4,6924
9
9
  validator/rules/__init__.py,sha256=z3Vk3R5CRgjeqyDWZxdofD2tBMTgdyYVuFmo1mKOTj4,830
10
10
  validator/rules/array.py,sha256=7xwdXnthWZNDbD4lONgqtOf44OOQq1J6XexYm6BXea4,3512
11
11
  validator/rules/base.py,sha256=yhxQdGiiM-wY7VtRH-KRU-_wmw7RVJnmJcmayO1EqBk,5870
12
12
  validator/rules/basic.py,sha256=8k-REzsSyknhNuw0vPKMxtovvJBVlyZDihXXVznRQpM,6420
13
- validator/rules/boolean.py,sha256=UuSO9BdBMR5l6sB3dgZqoqOVjqu47yjFrmJ7xylTVKs,5452
13
+ validator/rules/boolean.py,sha256=ff5qLKOJXi08VJnENaqeEIabbXtoCQvW2fDR6vOsXl0,5452
14
14
  validator/rules/comparison.py,sha256=BnufmgCkSqzUjSFWvlsKN8auOCKTBs7Pxy5i9rwSQs8,15564
15
15
  validator/rules/date.py,sha256=k27U3e08OPZoXyEX0Yj86ZfjCUuhLy4eBmqYbyc4Jn4,7292
16
16
  validator/rules/files.py,sha256=3Q0KoadDKqNIiVlBR7b5b-XBs4gOg3ZFu7wU7SrdqWQ,12280
@@ -24,8 +24,8 @@ validator/services/rule_error_handler.py,sha256=l4jA6WtTRBNGytVA_nSwJpbix_viNWhq
24
24
  validator/services/rule_preparer.py,sha256=7HSMuSGGgaYWv8dt_m7pL5MQkJcTwFBH9gfmCZwzt8U,5284
25
25
  validator/utils/__init__.py,sha256=Yzo-xv285Be-a233M4duDdYtscuHiuBbPSX_C8yViJI,20
26
26
  validator/utils/string.py,sha256=0YACzeEaWNEOR9_7O9A8D1ItIbtWfOJ8IfrzcB8VMYA,515
27
- safeshield-1.5.4.dist-info/LICENSE,sha256=YxHGBtuH0Vsy-KPvW2_afKE54XIrf1eipLF4v6kaybI,35276
28
- safeshield-1.5.4.dist-info/METADATA,sha256=ZtLkkdr4CeSIZgv9a_KaxhYFpqRx1zkita8Akl5_5ZU,6544
29
- safeshield-1.5.4.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
30
- safeshield-1.5.4.dist-info/top_level.txt,sha256=iUtV3dlHOIiMfLuY4pruY00lFni8JzOkQ3Nh1II19OE,10
31
- safeshield-1.5.4.dist-info/RECORD,,
27
+ safeshield-1.5.6.dist-info/LICENSE,sha256=YxHGBtuH0Vsy-KPvW2_afKE54XIrf1eipLF4v6kaybI,35276
28
+ safeshield-1.5.6.dist-info/METADATA,sha256=6ieesvSGuBXBpy6wzDM99l1GkXVUCRtDjwzrxuKUKuw,6544
29
+ safeshield-1.5.6.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
30
+ safeshield-1.5.6.dist-info/top_level.txt,sha256=iUtV3dlHOIiMfLuY4pruY00lFni8JzOkQ3Nh1II19OE,10
31
+ safeshield-1.5.6.dist-info/RECORD,,
@@ -111,8 +111,21 @@ class DatabaseManager:
111
111
  return cursor.fetchall()
112
112
 
113
113
  def exists(self, table: str, column: str, value: Any) -> bool:
114
- """Optimized exists check with parameterized query"""
115
- sql = f"SELECT 1 FROM {table} WHERE {column} = %s LIMIT 1"
114
+ if '.' in column:
115
+ parts = column.split('.')
116
+ if len(parts) != 2:
117
+ raise ValueError("Foreign key reference should be in format 'foreign_key.column'")
118
+
119
+ foreign_key, related_column = parts
120
+ sql = f"""
121
+ SELECT 1 FROM {table} t
122
+ JOIN {foreign_key} r ON t.{foreign_key} = r.id
123
+ WHERE r.{related_column} = %s
124
+ LIMIT 1
125
+ """
126
+ else:
127
+ sql = f"SELECT 1 FROM {table} WHERE {column} = %s LIMIT 1"
128
+
116
129
  result = self.query(sql, (value,))
117
130
  return bool(result)
118
131
 
@@ -45,7 +45,7 @@ class DeclinedRule(Rule):
45
45
  return f"The :attribute must be declined."
46
46
 
47
47
  class AcceptedIfRule(AcceptedRule):
48
- _count_parameter = 2
48
+ _count_parameter = 1
49
49
 
50
50
  def validate(self, field: str, value: Any, params: List[str]) -> bool:
51
51
  condition_met = False
@@ -99,7 +99,7 @@ class AcceptedUnlessRule(AcceptedRule):
99
99
  return replacements
100
100
 
101
101
  class DeclinedIfRule(DeclinedRule):
102
- _count_parameter = 2
102
+ _count_parameter = 1
103
103
 
104
104
  def validate(self, field: str, value: Any, params: List[str]) -> bool:
105
105
  condition_met = False