dapper-sqls 1.2.1__py3-none-any.whl → 1.2.3__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.
- dapper_sqls/models/result.py +74 -27
- dapper_sqls/sqlite/installer.py +6 -3
- {dapper_sqls-1.2.1.dist-info → dapper_sqls-1.2.3.dist-info}/METADATA +1 -1
- {dapper_sqls-1.2.1.dist-info → dapper_sqls-1.2.3.dist-info}/RECORD +6 -6
- {dapper_sqls-1.2.1.dist-info → dapper_sqls-1.2.3.dist-info}/WHEEL +0 -0
- {dapper_sqls-1.2.1.dist-info → dapper_sqls-1.2.3.dist-info}/top_level.txt +0 -0
dapper_sqls/models/result.py
CHANGED
@@ -96,27 +96,32 @@ class Result(object):
|
|
96
96
|
return self._error
|
97
97
|
|
98
98
|
class Fetchone(BaseResult):
|
99
|
-
|
99
|
+
|
100
|
+
def __init__(self, query: str | tuple, cursor, result, exception: Exception = None):
|
100
101
|
super().__init__(query)
|
101
102
|
self._error = Error(exception)
|
102
103
|
self._list = []
|
103
|
-
self._dict
|
104
|
-
|
104
|
+
self._dict: dict[str, Any] = {}
|
105
|
+
|
106
|
+
if cursor is not None:
|
105
107
|
self._status_code = 200
|
106
108
|
self._success = True
|
107
109
|
if result:
|
108
110
|
sensitive_fields = SensitiveFields.get()
|
109
111
|
columns = [column[0] for column in cursor.description]
|
110
112
|
raw_dict = dict(zip(columns, result))
|
113
|
+
|
114
|
+
# Exclui campos sensíveis
|
111
115
|
self._dict = {
|
112
116
|
k: v for k, v in raw_dict.items()
|
113
|
-
if k not in sensitive_fields
|
117
|
+
if k not in sensitive_fields
|
114
118
|
}
|
115
|
-
|
119
|
+
# Lista só com valores que não sejam None
|
120
|
+
self._list = [v for v in result if v is not None]
|
116
121
|
else:
|
117
122
|
self._status_code = SQL_ERROR_HTTP_CODES.get(self._error.type, 500)
|
118
123
|
self._success = False
|
119
|
-
|
124
|
+
|
120
125
|
def _organize_joined_tables(self, joins: list):
|
121
126
|
alias_to_table_name = {
|
122
127
|
join.model.TABLE_ALIAS: join.model.__class__.__name__ for join in joins
|
@@ -126,9 +131,11 @@ class Result(object):
|
|
126
131
|
return
|
127
132
|
|
128
133
|
alias_data = defaultdict(dict)
|
134
|
+
cleaned_alias_data : dict[str, dict] = {}
|
129
135
|
keys_to_remove = []
|
130
136
|
|
131
|
-
for key, value in self._dict.items():
|
137
|
+
for key, value in self._dict.items():
|
138
|
+
|
132
139
|
for alias_table, table_name in alias_to_table_name.items():
|
133
140
|
if alias_table in key:
|
134
141
|
column_name = key.replace(alias_table, '')
|
@@ -136,15 +143,27 @@ class Result(object):
|
|
136
143
|
keys_to_remove.append(key)
|
137
144
|
break
|
138
145
|
|
146
|
+
if alias_data:
|
147
|
+
for table_name, cols in alias_data.items():
|
148
|
+
if all(v is None for v in cols.values()):
|
149
|
+
cleaned_alias_data[table_name] = {}
|
150
|
+
else:
|
151
|
+
cleaned_alias_data[table_name] = {
|
152
|
+
k: v for k, v in cols.items() if v is not None
|
153
|
+
}
|
154
|
+
|
139
155
|
for key in keys_to_remove:
|
140
|
-
self._dict.pop(key)
|
156
|
+
self._dict.pop(key, None)
|
141
157
|
|
142
|
-
if
|
143
|
-
self._dict['joined_tables'] =
|
158
|
+
if cleaned_alias_data:
|
159
|
+
self._dict['joined_tables'] = {
|
160
|
+
t: {k: v for k, v in cols.items() if v}
|
161
|
+
for t, cols in cleaned_alias_data.items()
|
162
|
+
}
|
144
163
|
|
145
164
|
if self._list:
|
146
165
|
columns = [col for col in self._dict.keys() if col]
|
147
|
-
self._list = [self._dict[col] for col in columns]
|
166
|
+
self._list = [self._dict[col] for col in columns if self._dict[col] is not None]
|
148
167
|
|
149
168
|
def model_dump(self, *, include: set[str] = None):
|
150
169
|
if not self.success:
|
@@ -153,11 +172,14 @@ class Result(object):
|
|
153
172
|
'message': self.error.message
|
154
173
|
}
|
155
174
|
|
156
|
-
result_dict = self._dict.
|
175
|
+
result_dict = {k: v for k, v in self._dict.items() if v is not None}
|
157
176
|
|
158
177
|
if include is not None:
|
159
178
|
include = set(include)
|
160
|
-
result_dict = {
|
179
|
+
result_dict = {
|
180
|
+
k: v for k, v in result_dict.items()
|
181
|
+
if k in include or k == 'joined_tables'
|
182
|
+
}
|
161
183
|
|
162
184
|
return {
|
163
185
|
'status_code': self.status_code,
|
@@ -174,7 +196,7 @@ class Result(object):
|
|
174
196
|
|
175
197
|
@property
|
176
198
|
def dict(self):
|
177
|
-
return self._dict
|
199
|
+
return {k: v for k, v in self._dict.items() if v is not None}
|
178
200
|
|
179
201
|
@property
|
180
202
|
def success(self):
|
@@ -220,24 +242,25 @@ class Result(object):
|
|
220
242
|
def model_dump(self, *, include: set[str] = None):
|
221
243
|
return self._fetchone.model_dump(include=include)
|
222
244
|
|
223
|
-
|
224
245
|
class Fetchall(BaseResult):
|
225
|
-
|
226
|
-
def __init__(self, query : str | tuple, cursor, result, exception: Exception = None):
|
246
|
+
def __init__(self, query: str | tuple, cursor, result, exception: Exception = None):
|
227
247
|
super().__init__(query)
|
228
248
|
self._error = Error(exception)
|
229
|
-
self._list_dict
|
230
|
-
|
249
|
+
self._list_dict: list[dict[str, Any]] = []
|
250
|
+
|
251
|
+
if cursor is not None:
|
231
252
|
self._status_code = 200
|
232
253
|
self._success = True
|
233
254
|
if result:
|
234
255
|
sensitive_fields = SensitiveFields.get()
|
235
256
|
columns = [column[0] for column in cursor.description]
|
257
|
+
|
236
258
|
for r in result:
|
237
259
|
raw_dict = dict(zip(columns, r))
|
260
|
+
# remove campos sensíveis
|
238
261
|
clean_dict = {
|
239
262
|
k: v for k, v in raw_dict.items()
|
240
|
-
if k not in sensitive_fields
|
263
|
+
if k not in sensitive_fields
|
241
264
|
}
|
242
265
|
self._list_dict.append(clean_dict)
|
243
266
|
else:
|
@@ -251,9 +274,10 @@ class Result(object):
|
|
251
274
|
|
252
275
|
for item in self._list_dict:
|
253
276
|
alias_data = defaultdict(dict)
|
277
|
+
cleaned_alias_data : dict[str, dict] = {}
|
254
278
|
keys_to_remove = []
|
255
279
|
|
256
|
-
for key, value in item.items():
|
280
|
+
for key, value in item.items():
|
257
281
|
for alias_table, table_name in alias_to_table_name.items():
|
258
282
|
if alias_table in key:
|
259
283
|
column_name = key.replace(alias_table, '')
|
@@ -261,11 +285,24 @@ class Result(object):
|
|
261
285
|
keys_to_remove.append(key)
|
262
286
|
break
|
263
287
|
|
288
|
+
if alias_data:
|
289
|
+
for table_name, cols in alias_data.items():
|
290
|
+
if all(v is None for v in cols.values()):
|
291
|
+
cleaned_alias_data[table_name] = {}
|
292
|
+
else:
|
293
|
+
cleaned_alias_data[table_name] = {
|
294
|
+
k: v for k, v in cols.items() if v is not None
|
295
|
+
}
|
296
|
+
|
264
297
|
for key in keys_to_remove:
|
265
|
-
|
298
|
+
item.pop(key, None)
|
266
299
|
|
267
|
-
if
|
268
|
-
|
300
|
+
if cleaned_alias_data:
|
301
|
+
# filtra None também dentro de joined_tables
|
302
|
+
item['joined_tables'] = {
|
303
|
+
t: {k: v for k, v in cols.items()}
|
304
|
+
for t, cols in cleaned_alias_data.items()
|
305
|
+
}
|
269
306
|
|
270
307
|
def model_dump(self, *, include: set[str] = None):
|
271
308
|
if not self.success:
|
@@ -274,11 +311,18 @@ class Result(object):
|
|
274
311
|
'message': self.error.message
|
275
312
|
}
|
276
313
|
|
277
|
-
|
314
|
+
# remove valores None de todos os dicts
|
315
|
+
data = [
|
316
|
+
{k: v for k, v in d.items() if v is not None}
|
317
|
+
for d in self._list_dict
|
318
|
+
]
|
278
319
|
|
279
320
|
if include is not None:
|
280
321
|
include = set(include)
|
281
|
-
data = [
|
322
|
+
data = [
|
323
|
+
{k: v for k, v in d.items() if k in include or k == 'joined_tables'}
|
324
|
+
for d in data
|
325
|
+
]
|
282
326
|
|
283
327
|
return {
|
284
328
|
'status_code': self.status_code,
|
@@ -291,7 +335,10 @@ class Result(object):
|
|
291
335
|
|
292
336
|
@property
|
293
337
|
def list_dict(self):
|
294
|
-
return
|
338
|
+
return [
|
339
|
+
{k: v for k, v in d.items() if v is not None}
|
340
|
+
for d in self._list_dict
|
341
|
+
]
|
295
342
|
|
296
343
|
@property
|
297
344
|
def success(self):
|
dapper_sqls/sqlite/installer.py
CHANGED
@@ -34,9 +34,12 @@ class DataBaseInstall(object):
|
|
34
34
|
with self.engine.connect() as conn:
|
35
35
|
self.tables.meta_data.create_all(self.engine)
|
36
36
|
if hasattr(self.tables, 'system'):
|
37
|
-
|
38
|
-
|
39
|
-
|
37
|
+
try:
|
38
|
+
ins = insert(self.tables.system).values(App=app_name, Tema='light')
|
39
|
+
conn.execute(ins)
|
40
|
+
conn.commit()
|
41
|
+
except:
|
42
|
+
...
|
40
43
|
else:
|
41
44
|
if not self.are_tables_existing(self.engine):
|
42
45
|
try:
|
@@ -26,15 +26,15 @@ dapper_sqls/models/base.py,sha256=KmlbLa9_k0ioGDWVjISes4kIP8OgElAoCqXbr3VbSCE,85
|
|
26
26
|
dapper_sqls/models/connection.py,sha256=z5OkYeY5Qp-dXdy1bvZHAlov-Kq-lgMxC6RqNdTiiq4,1745
|
27
27
|
dapper_sqls/models/http.py,sha256=rCmf4Mj1bA_oc0k0vDxi2v1Cqd4oXDDU83P_6kNwTuA,356
|
28
28
|
dapper_sqls/models/query_field.py,sha256=QOQlB6hlVm7fGZqsAFgWGznLEDSR03uTI_--xDyUEao,7763
|
29
|
-
dapper_sqls/models/result.py,sha256=
|
29
|
+
dapper_sqls/models/result.py,sha256=EsbgP7sY8QO5i-ddPwWH9mmRYGPLpQnwe89H1zWImqg,14728
|
30
30
|
dapper_sqls/sqlite/__init__.py,sha256=EUREulLqSlZ43_3pEYlDJ3rF7i0cSwROnqrlZX9ircI,247
|
31
31
|
dapper_sqls/sqlite/async_local_database.py,sha256=VqMdAD2wdzqFMIKEpnOgbajEwwSmxLqtSkqWSipbu6o,7754
|
32
32
|
dapper_sqls/sqlite/decorators.py,sha256=hvehaUi6uV3BkLNOcbGhv3-fV0VJD0hLomXznSSMJEA,2420
|
33
|
-
dapper_sqls/sqlite/installer.py,sha256=
|
33
|
+
dapper_sqls/sqlite/installer.py,sha256=pHRXFn8gFPUj_d42ErKcMUDFmzc8tK1DabuhgqUIuSw,4901
|
34
34
|
dapper_sqls/sqlite/local_database.py,sha256=kuEVRJvzUUQg3X1Abq9ZYslO9n5IMovaCj7jnB51qSs,5902
|
35
35
|
dapper_sqls/sqlite/models.py,sha256=m1I0-iYDdv-4fVYMsAboRYHbMEcwI4GScZSdbs7_nUY,2232
|
36
36
|
dapper_sqls/sqlite/utils.py,sha256=22n2ry7_7b7XGDjwv3sY8swADpXDAynR0-E8WQrvHzc,230
|
37
|
-
dapper_sqls-1.2.
|
38
|
-
dapper_sqls-1.2.
|
39
|
-
dapper_sqls-1.2.
|
40
|
-
dapper_sqls-1.2.
|
37
|
+
dapper_sqls-1.2.3.dist-info/METADATA,sha256=8la5wW7ydUMVjseiK-XDcDaalnkz2tMYTFl0-g7HZms,964
|
38
|
+
dapper_sqls-1.2.3.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
39
|
+
dapper_sqls-1.2.3.dist-info/top_level.txt,sha256=Pe1YqCPngnYbSVdhJyDrdFWHFCOqBvFW8WK7kTaIax4,12
|
40
|
+
dapper_sqls-1.2.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|