apexdevkit 1.18.8__tar.gz → 1.18.9__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.
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/PKG-INFO +1 -1
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/query/generator.py +32 -26
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/pyproject.toml +1 -1
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/LICENSE +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/README.md +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/__init__.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/annotation/__init__.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/annotation/deprecate.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/environment.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/error.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/fastapi/__init__.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/fastapi/builder.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/fastapi/dependable.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/fastapi/docs.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/fastapi/name.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/fastapi/request.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/fastapi/resource.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/fastapi/response.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/fastapi/router.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/fastapi/schema.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/fastapi/service.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/fluent.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/formatter.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/http/__init__.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/http/fake.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/http/fluent.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/http/httpx.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/http/json.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/http/url.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/id.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/key_fn.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/py.typed +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/query/__init__.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/query/query.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/repository/__init__.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/repository/base.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/repository/connector.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/repository/database.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/repository/decorator.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/repository/in_memory.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/repository/interface.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/repository/mongo.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/repository/mssql.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/repository/sql.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/repository/sqlite.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/server.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/synchronization.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/testing/__init__.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/testing/database.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/testing/fake.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/testing/rest.py +0 -0
- {apexdevkit-1.18.8 → apexdevkit-1.18.9}/apexdevkit/value.py +0 -0
|
@@ -215,7 +215,7 @@ class MsSqlField:
|
|
|
215
215
|
return result
|
|
216
216
|
|
|
217
217
|
def as_order_part(self, is_descending: bool = False) -> str:
|
|
218
|
-
result = self.
|
|
218
|
+
result = self.name
|
|
219
219
|
|
|
220
220
|
if is_descending:
|
|
221
221
|
result += " DESC"
|
|
@@ -262,6 +262,34 @@ class MsSqlFooterGenerator:
|
|
|
262
262
|
raise ForbiddenError(message=f"Invalid field name: {name}")
|
|
263
263
|
|
|
264
264
|
|
|
265
|
+
@dataclass
|
|
266
|
+
class MsSqlOrderGenerator:
|
|
267
|
+
ordering: list[Sort]
|
|
268
|
+
|
|
269
|
+
fields: list[MsSqlField] = field(default_factory=list)
|
|
270
|
+
|
|
271
|
+
def generate(self) -> str:
|
|
272
|
+
if not self.ordering:
|
|
273
|
+
return ""
|
|
274
|
+
|
|
275
|
+
clause = ", ".join(self.generate_one(item) for item in self.ordering)
|
|
276
|
+
|
|
277
|
+
return f"ORDER BY {clause}"
|
|
278
|
+
|
|
279
|
+
def generate_one(self, item: Sort) -> str:
|
|
280
|
+
return self.field_for(item.name).as_order_part(item.is_descending)
|
|
281
|
+
|
|
282
|
+
def field_for(self, name: str) -> MsSqlField:
|
|
283
|
+
for f in self.fields:
|
|
284
|
+
if f.alias == name:
|
|
285
|
+
return f
|
|
286
|
+
|
|
287
|
+
if f.alias == "" and f.name == name:
|
|
288
|
+
return f
|
|
289
|
+
|
|
290
|
+
raise ForbiddenError(message=f"Invalid field name: {name}")
|
|
291
|
+
|
|
292
|
+
|
|
265
293
|
@dataclass
|
|
266
294
|
class MsSqlSourceGenerator:
|
|
267
295
|
source: str
|
|
@@ -318,31 +346,6 @@ class MsSqlConditionGenerator:
|
|
|
318
346
|
)
|
|
319
347
|
|
|
320
348
|
|
|
321
|
-
@dataclass
|
|
322
|
-
class MsSqlOrderGenerator:
|
|
323
|
-
ordering: list[Sort]
|
|
324
|
-
|
|
325
|
-
fields: list[MsSqlField] = field(default_factory=list)
|
|
326
|
-
|
|
327
|
-
def generate(self) -> str:
|
|
328
|
-
if not self.ordering:
|
|
329
|
-
return ""
|
|
330
|
-
|
|
331
|
-
clause = ", ".join(self.generate_one(item) for item in self.ordering)
|
|
332
|
-
|
|
333
|
-
return f"ORDER BY {clause}"
|
|
334
|
-
|
|
335
|
-
def generate_one(self, item: Sort) -> str:
|
|
336
|
-
return self.field_for(item.name).as_order_part(item.is_descending)
|
|
337
|
-
|
|
338
|
-
def field_for(self, name: str) -> MsSqlField:
|
|
339
|
-
for f in self.fields:
|
|
340
|
-
if f.name == name:
|
|
341
|
-
return f
|
|
342
|
-
|
|
343
|
-
raise ForbiddenError(message=f"Invalid field name: {name}")
|
|
344
|
-
|
|
345
|
-
|
|
346
349
|
@dataclass
|
|
347
350
|
class MsSqlPagingGenerator:
|
|
348
351
|
paging: Page
|
|
@@ -392,6 +395,9 @@ class OperationEvaluator:
|
|
|
392
395
|
if f.alias == node.name:
|
|
393
396
|
return f.name
|
|
394
397
|
|
|
398
|
+
if f.alias == "" and f.name == node.name:
|
|
399
|
+
return f.name
|
|
400
|
+
|
|
395
401
|
raise ForbiddenError(message=f"Invalid field name: {node.name}")
|
|
396
402
|
|
|
397
403
|
def _get_raw_value(self, node: Leaf) -> str | None:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|