main
1from enum import Enum
2from typing import List, Union, Optional
3
4from pydantic import BaseModel
5
6
7class Table(str, Enum):
8 orders = "orders"
9 customers = "customers"
10 products = "products"
11
12
13class Column(str, Enum):
14 id = "id"
15 status = "status"
16 expected_delivery_date = "expected_delivery_date"
17 delivered_at = "delivered_at"
18 shipped_at = "shipped_at"
19 ordered_at = "ordered_at"
20 canceled_at = "canceled_at"
21
22
23class Operator(str, Enum):
24 eq = "="
25 gt = ">"
26 lt = "<"
27 le = "<="
28 ge = ">="
29 ne = "!="
30
31
32class OrderBy(str, Enum):
33 asc = "asc"
34 desc = "desc"
35
36
37class DynamicValue(BaseModel):
38 column_name: str
39
40
41class Condition(BaseModel):
42 column: str
43 operator: Operator
44 value: Union[str, int, DynamicValue]
45
46
47class Query(BaseModel):
48 name: Optional[str] = None
49 table_name: Table
50 columns: List[Column]
51 conditions: List[Condition]
52 order_by: OrderBy