ApiLogicServer 14.3.20__py3-none-any.whl → 14.4.0__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.
- api_logic_server_cli/api_logic_server.py +5 -14
- api_logic_server_cli/api_logic_server_info.yaml +3 -3
- api_logic_server_cli/cli.py +52 -5
- api_logic_server_cli/create_from_model/__pycache__/create_db_from_model.cpython-312.pyc +0 -0
- api_logic_server_cli/create_from_model/__pycache__/ont_build.cpython-312.pyc +0 -0
- api_logic_server_cli/create_from_model/__pycache__/ont_create.cpython-312.pyc +0 -0
- api_logic_server_cli/create_from_model/create_db_from_model.py +2 -0
- api_logic_server_cli/create_from_model/ont_build.py +19 -14
- api_logic_server_cli/create_from_model/ont_create.py +5 -5
- api_logic_server_cli/create_from_model/safrs-react-admin-npm-build/static/.DS_Store +0 -0
- api_logic_server_cli/database/nw-gold-fix.sql +62 -0
- api_logic_server_cli/database/nw-gold.sqlite +0 -0
- api_logic_server_cli/fragments/docker-compose.yml +27 -0
- api_logic_server_cli/genai/genai.py +43 -11
- api_logic_server_cli/genai/genai_graphics.py +379 -0
- api_logic_server_cli/genai/genai_logic_builder.py +2 -2
- api_logic_server_cli/genai/genai_svcs.py +24 -8
- api_logic_server_cli/manager.py +19 -10
- api_logic_server_cli/prototypes/.DS_Store +0 -0
- api_logic_server_cli/prototypes/base/.DS_Store +0 -0
- api_logic_server_cli/prototypes/base/.vscode/launch.json +19 -0
- api_logic_server_cli/prototypes/base/api/expose_api_models.py +3 -1
- api_logic_server_cli/prototypes/base/api_logic_server_run.py +5 -2
- api_logic_server_cli/prototypes/base/config/activate_logicbank.py +1 -0
- api_logic_server_cli/prototypes/base/config/config.py +95 -24
- api_logic_server_cli/prototypes/base/config/logging.yml +1 -0
- api_logic_server_cli/prototypes/base/config/server_setup.py +33 -1
- api_logic_server_cli/prototypes/base/database/test_data/readme.md +3 -1
- api_logic_server_cli/prototypes/base/devops/docker-standard-image/docker-compose-standard-image.yml +7 -2
- api_logic_server_cli/prototypes/base/docs/graphics/readme.md +12 -0
- api_logic_server_cli/prototypes/base/docs/training/logic_bank_api.prompt +314 -0
- api_logic_server_cli/prototypes/base/docs/training/logic_example.py +41 -0
- api_logic_server_cli/prototypes/base/integration/kafka/kafka_producer.py +7 -3
- api_logic_server_cli/prototypes/base/integration/system/FlaskKafka.py +5 -1
- api_logic_server_cli/prototypes/base/security/authentication_provider/keycloak/auth_provider.py +1 -1
- api_logic_server_cli/prototypes/base/security/declare_security.py +4 -0
- api_logic_server_cli/prototypes/base/ui/admin/admin_loader.py +3 -1
- api_logic_server_cli/prototypes/base/ui/templates/bar_chart.jinja +64 -0
- api_logic_server_cli/prototypes/genai_demo/ui/admin/admin.yaml +1 -1
- api_logic_server_cli/prototypes/manager/README.md +56 -5
- api_logic_server_cli/prototypes/manager/system/genai/.DS_Store +0 -0
- api_logic_server_cli/prototypes/manager/system/genai/examples/.DS_Store +0 -0
- api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/.DS_Store +0 -0
- api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo.prompt +0 -8
- api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo.response_example +90 -60
- api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_docs_logic/docs/002_create_db_models.prompt +4 -4
- api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_docs_logic/docs/003_create_db_models.response +77 -47
- api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_informal.prompt +1 -1
- api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/dashboard_services.jinja +83 -0
- api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/graphics_dashboard_WIP.py +34 -0
- api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/graphics_services_api_xxx.py +32 -0
- api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/graphics_services_db.jinja +46 -0
- api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/graphics_services_db_each_method.jinja +36 -0
- api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/html_template.jinja +76 -0
- api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/index.html +19 -0
- api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/sales_by_region.jinja +63 -0
- api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/graphics.prompt +22 -0
- api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/graphics_request.prompt +5 -0
- api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/response_format.prompt +15 -0
- api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/sqlite_inserts.prompt +2 -0
- api_logic_server_cli/prototypes/manager/system/install-ApiLogicServer-dev/install-ApiLogicServer-dev.ps1 +100 -0
- api_logic_server_cli/prototypes/manager/system/install-ApiLogicServer-dev/install-ApiLogicServer-dev.sh +116 -0
- api_logic_server_cli/prototypes/manager/system/install-ApiLogicServer-dev/readme.md +7 -0
- api_logic_server_cli/prototypes/manager/system/style-guide.yaml +2 -2
- api_logic_server_cli/prototypes/manager/webgenai/README.md +6 -0
- api_logic_server_cli/prototypes/nw/docs/graphics/count_orders_by_category.prompt +1 -0
- api_logic_server_cli/prototypes/nw/docs/graphics/order_count_by_month.prompt +1 -0
- api_logic_server_cli/prototypes/nw/docs/graphics/request copy.json +892 -0
- api_logic_server_cli/prototypes/nw/docs/graphics/request.json +6 -0
- api_logic_server_cli/prototypes/nw/docs/graphics/response.json +17 -0
- api_logic_server_cli/prototypes/nw/docs/graphics/response.yaml +59 -0
- api_logic_server_cli/prototypes/nw/docs/graphics/sales_by_category.prompt +1 -0
- api_logic_server_cli/prototypes/nw/ui/admin/home.js +5 -4
- api_logic_server_cli/prototypes/nw/ui/app_model_custom.yaml +851 -1082
- api_logic_server_cli/prototypes/nw_no_cust/docs/graphics/count_orders_by_category.prompt +1 -0
- api_logic_server_cli/prototypes/nw_no_cust/docs/graphics/request copy.json +892 -0
- api_logic_server_cli/prototypes/nw_no_cust/docs/graphics/request.json +6 -0
- api_logic_server_cli/prototypes/nw_no_cust/docs/graphics/response.json +17 -0
- api_logic_server_cli/prototypes/nw_no_cust/docs/graphics/response.yaml +59 -0
- api_logic_server_cli/prototypes/nw_no_cust/docs/graphics/sales_by_category.prompt +1 -0
- api_logic_server_cli/prototypes/nw_no_cust/docs/graphics/sales_by_employee.prompt +1 -0
- api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/1_langchain_loader.py +19 -0
- api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/2_gpt_mcp_prompt.txt +19 -0
- api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/3_executor_test_agent.py +38 -0
- api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/README.md +17 -0
- api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/resources/curl.txt +4 -0
- api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/resources/nw_swagger_3.yaml +16660 -0
- api_logic_server_cli/prototypes/nw_no_cust/integration/mcp/run_executor.py +23 -0
- api_logic_server_cli/prototypes/ont_app/ontimize_seed/nginx/nginx.conf +2 -2
- api_logic_server_cli/prototypes/ont_app/ontimize_seed/package.json +6 -6
- api_logic_server_cli/prototypes/ont_app/ontimize_seed/src/app/app.config.ts +2 -1
- api_logic_server_cli/prototypes/ont_app/ontimize_seed/src/environments/environment.prod.ts +5 -5
- api_logic_server_cli/prototypes/ont_app/ontimize_seed/src/environments/environment.ts +5 -5
- api_logic_server_cli/prototypes/ont_app/templates/app_config.jinja +1 -1
- api_logic_server_cli/prototypes/ont_app/templates/detail_template.html +1 -1
- api_logic_server_cli/prototypes/ont_app/templates/new_template.html +16 -16
- apilogicserver-14.4.0.dist-info/METADATA +76 -0
- {apilogicserver-14.3.20.dist-info → apilogicserver-14.4.0.dist-info}/RECORD +102 -59
- {apilogicserver-14.3.20.dist-info → apilogicserver-14.4.0.dist-info}/WHEEL +1 -1
- api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/zsqlite_inserts_iterations.prompt +0 -29
- api_logic_server_cli/prototypes/manager/webgenai/docker-compose-webg.yml +0 -33
- api_logic_server_cli/prototypes/manager/webgenai/webg_config/license.json +0 -6
- api_logic_server_cli/prototypes/manager/webgenai/webg_config/web_genai.txt +0 -13
- apilogicserver-14.3.20.dist-info/METADATA +0 -167
- {apilogicserver-14.3.20.dist-info → apilogicserver-14.4.0.dist-info}/entry_points.txt +0 -0
- {apilogicserver-14.3.20.dist-info → apilogicserver-14.4.0.dist-info}/licenses/LICENSE +0 -0
- {apilogicserver-14.3.20.dist-info → apilogicserver-14.4.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,892 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"role": "user",
|
|
4
|
+
"content": "You are a data modelling expert and python software architect who expands on user input ideas.
|
|
5
|
+
|
|
6
|
+
<responseFormat>
|
|
7
|
+
class Rule(BaseModel):
|
|
8
|
+
name: str
|
|
9
|
+
description: str
|
|
10
|
+
use_case: str # specified use case or requirement name (use 'General' if missing)
|
|
11
|
+
entity: str # the entity being constrained or derived
|
|
12
|
+
code: str # logicbank rule code
|
|
13
|
+
|
|
14
|
+
class Model(BaseModel):
|
|
15
|
+
classname: str
|
|
16
|
+
code: str # sqlalchemy model code
|
|
17
|
+
sqlite_create: str # sqlite create table statement
|
|
18
|
+
description: str
|
|
19
|
+
name: str
|
|
20
|
+
|
|
21
|
+
class TestDataRow(BaseModel):
|
|
22
|
+
test_data_row_variable: str # the Python test data row variable
|
|
23
|
+
code: str # Python code to create a test data row instance
|
|
24
|
+
|
|
25
|
+
class Graphic(BaseModel):
|
|
26
|
+
sqlalchemy_query: str # sqlalchemy query using group by, returns result = { \"result\": [ (\"name\", \"value\") ] }
|
|
27
|
+
classes_used: str # comma-delimited list of classes used in sqlalchemy_query
|
|
28
|
+
name: str # suggested Python name for sqlalchemy_query
|
|
29
|
+
html_code: str # create a java script app to show a bar chart from sqlalchemy_query result
|
|
30
|
+
|
|
31
|
+
class WGResult(BaseModel): # must match system/genai/prompt_inserts/response_format.prompt
|
|
32
|
+
# response: str # result
|
|
33
|
+
models : List[Model] # list of sqlalchemy classes in the response
|
|
34
|
+
rules : List[Rule] # list rule declarations
|
|
35
|
+
graphics: List[Graphic] # list of Graphic objects
|
|
36
|
+
test_data: str
|
|
37
|
+
test_data_rows: List[TestDataRow] # list of test data rows
|
|
38
|
+
test_data_sqlite: str # test data as sqlite INSERT statements
|
|
39
|
+
name: str # suggest a short name for the project
|
|
40
|
+
|
|
41
|
+
Format the response as a WGResult.
|
|
42
|
+
|
|
43
|
+
</responseFormat>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
Create WGResult Graphics for prompts like 'graph sales by region'.
|
|
47
|
+
* use 'sales by region' to create a WGResult Graphic.sqlalchemy_query
|
|
48
|
+
* Be sure to use class names, not table names
|
|
49
|
+
* for example, using Northwind:
|
|
50
|
+
# SQLAlchemy query for Sales by Category
|
|
51
|
+
sales_by_category = (
|
|
52
|
+
session.query(
|
|
53
|
+
category.CategoryName,
|
|
54
|
+
func.sum(order_detail.Quantity * order_detail.UnitPrice * (1 - order_detail.Discount)).label(\"TotalSales\")
|
|
55
|
+
)
|
|
56
|
+
.join(product, category.Id == product.CategoryId)
|
|
57
|
+
.join(order_detail, product.Id == order_detail.ProductId)
|
|
58
|
+
.join(order, order_detail.OrderId == order.Id)
|
|
59
|
+
.filter(order.ShippedDate.isnot(None)) # Consider only shipped orders
|
|
60
|
+
.group_by(category.CategoryName)
|
|
61
|
+
.order_by(func.sum(order_detail.Quantity * order_detail.UnitPrice * (1 - order_detail.Discount)).desc())
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
# coding: utf-8
|
|
65
|
+
|
|
66
|
+
from sqlalchemy import DECIMAL, DateTime # API Logic Server GenAI assist
|
|
67
|
+
|
|
68
|
+
from sqlalchemy import Boolean, Column, DECIMAL, Date, Double, ForeignKey, ForeignKeyConstraint, Integer, String, Table, Text, text
|
|
69
|
+
|
|
70
|
+
from sqlalchemy.orm import relationship
|
|
71
|
+
|
|
72
|
+
from sqlalchemy.ext.declarative import declarative_base
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
########################################################################################################################
|
|
77
|
+
|
|
78
|
+
# Classes describing database for SqlAlchemy ORM, initially created by schema introspection.
|
|
79
|
+
|
|
80
|
+
#
|
|
81
|
+
|
|
82
|
+
# Alter this file per your database maintenance policy
|
|
83
|
+
|
|
84
|
+
# See https://apilogicserver.github.io/Docs/Project-Rebuild/#rebuilding
|
|
85
|
+
|
|
86
|
+
#
|
|
87
|
+
|
|
88
|
+
# Created: March 25, 2025 19:54:24
|
|
89
|
+
|
|
90
|
+
# Database: sqlite:////Users/val/dev/ApiLogicServer/ApiLogicServer-dev/build_and_test/ApiLogicServer/samples/nw_sample_nocust/database/db.sqlite
|
|
91
|
+
|
|
92
|
+
# Dialect: sqlite
|
|
93
|
+
|
|
94
|
+
#
|
|
95
|
+
|
|
96
|
+
# mypy: ignore-errors
|
|
97
|
+
|
|
98
|
+
########################################################################################################################
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
from database.system.SAFRSBaseX import SAFRSBaseX, TestBase
|
|
103
|
+
|
|
104
|
+
from flask_login import UserMixin
|
|
105
|
+
|
|
106
|
+
import safrs, flask_sqlalchemy, os
|
|
107
|
+
|
|
108
|
+
from safrs import jsonapi_attr
|
|
109
|
+
|
|
110
|
+
from flask_sqlalchemy import SQLAlchemy
|
|
111
|
+
|
|
112
|
+
from sqlalchemy.orm import relationship
|
|
113
|
+
|
|
114
|
+
from sqlalchemy.orm import Mapped
|
|
115
|
+
|
|
116
|
+
from sqlalchemy.sql.sqltypes import NullType
|
|
117
|
+
|
|
118
|
+
from typing import List
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
db = SQLAlchemy()
|
|
123
|
+
|
|
124
|
+
Base = declarative_base() # type: flask_sqlalchemy.model.DefaultMeta
|
|
125
|
+
|
|
126
|
+
metadata = Base.metadata
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
#NullType = db.String # datatype fixup
|
|
131
|
+
|
|
132
|
+
#TIMESTAMP= db.TIMESTAMP
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
from sqlalchemy.dialects.sqlite import *
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
if os.getenv('APILOGICPROJECT_NO_FLASK') is None or os.getenv('APILOGICPROJECT_NO_FLASK') == 'None':
|
|
141
|
+
|
|
142
|
+
Base = SAFRSBaseX # enables rules to be used outside of Flask, e.g., test data loading
|
|
143
|
+
|
|
144
|
+
else:
|
|
145
|
+
|
|
146
|
+
Base = TestBase # ensure proper types, so rules work for data loading
|
|
147
|
+
|
|
148
|
+
print('*** Models.py Using TestBase ***')
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
class Category(Base): # type: ignore
|
|
157
|
+
|
|
158
|
+
__tablename__ = 'CategoryTableNameTest'
|
|
159
|
+
|
|
160
|
+
_s_collection_name = 'Category' # type: ignore
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
Id = Column(Integer, primary_key=True)
|
|
165
|
+
|
|
166
|
+
CategoryName_ColumnName = Column(String(8000))
|
|
167
|
+
|
|
168
|
+
Description = Column(String(8000))
|
|
169
|
+
|
|
170
|
+
Client_id = Column(Integer)
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
# parent relationships (access parent)
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
# child relationships (access children)
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
class Customer(Base): # type: ignore
|
|
187
|
+
|
|
188
|
+
__tablename__ = 'Customer'
|
|
189
|
+
|
|
190
|
+
_s_collection_name = 'Customer' # type: ignore
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
Id = Column(String(8000), primary_key=True)
|
|
195
|
+
|
|
196
|
+
CompanyName = Column(String(8000))
|
|
197
|
+
|
|
198
|
+
ContactName = Column(String(8000))
|
|
199
|
+
|
|
200
|
+
ContactTitle = Column(String(8000))
|
|
201
|
+
|
|
202
|
+
Address = Column(String(8000))
|
|
203
|
+
|
|
204
|
+
City = Column(String(8000))
|
|
205
|
+
|
|
206
|
+
Region = Column(String(8000))
|
|
207
|
+
|
|
208
|
+
PostalCode = Column(String(8000))
|
|
209
|
+
|
|
210
|
+
Country = Column(String(8000))
|
|
211
|
+
|
|
212
|
+
Phone = Column(String(8000))
|
|
213
|
+
|
|
214
|
+
Fax = Column(String(8000))
|
|
215
|
+
|
|
216
|
+
Balance : DECIMAL = Column(DECIMAL)
|
|
217
|
+
|
|
218
|
+
CreditLimit : DECIMAL = Column(DECIMAL)
|
|
219
|
+
|
|
220
|
+
OrderCount = Column(Integer, server_default=text(\"0\"))
|
|
221
|
+
|
|
222
|
+
UnpaidOrderCount = Column(Integer, server_default=text(\"0\"))
|
|
223
|
+
|
|
224
|
+
Client_id = Column(Integer)
|
|
225
|
+
|
|
226
|
+
allow_client_generated_ids = True
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
# parent relationships (access parent)
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
# child relationships (access children)
|
|
235
|
+
|
|
236
|
+
OrderList : Mapped[List[\"Order\"]] = relationship(back_populates=\"Customer\")
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
class CustomerDemographic(Base): # type: ignore
|
|
245
|
+
|
|
246
|
+
__tablename__ = 'CustomerDemographic'
|
|
247
|
+
|
|
248
|
+
_s_collection_name = 'CustomerDemographic' # type: ignore
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
Id = Column(String(8000), primary_key=True)
|
|
253
|
+
|
|
254
|
+
CustomerDesc = Column(String(8000))
|
|
255
|
+
|
|
256
|
+
allow_client_generated_ids = True
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
# parent relationships (access parent)
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
# child relationships (access children)
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
class Department(Base): # type: ignore
|
|
273
|
+
|
|
274
|
+
__tablename__ = 'Department'
|
|
275
|
+
|
|
276
|
+
_s_collection_name = 'Department' # type: ignore
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
Id = Column(Integer, primary_key=True)
|
|
281
|
+
|
|
282
|
+
DepartmentId = Column(ForeignKey('Department.Id'))
|
|
283
|
+
|
|
284
|
+
DepartmentName = Column(String(100))
|
|
285
|
+
|
|
286
|
+
SecurityLevel = Column(Integer, server_default=text(\"0\"))
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
# parent relationships (access parent)
|
|
291
|
+
|
|
292
|
+
Department : Mapped[\"Department\"] = relationship(remote_side=[Id], back_populates=(\"DepartmentList\"))
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
# child relationships (access children)
|
|
297
|
+
|
|
298
|
+
DepartmentList : Mapped[List[\"Department\"]] = relationship(back_populates=\"Department\")
|
|
299
|
+
|
|
300
|
+
EmployeeList : Mapped[List[\"Employee\"]] = relationship(foreign_keys='[Employee.OnLoanDepartmentId]', back_populates=\"OnLoanDepartment\")
|
|
301
|
+
|
|
302
|
+
WorksForEmployeeList : Mapped[List[\"Employee\"]] = relationship(foreign_keys='[Employee.WorksForDepartmentId]', back_populates=\"WorksForDepartment\")
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
class Location(Base): # type: ignore
|
|
311
|
+
|
|
312
|
+
__tablename__ = 'Location'
|
|
313
|
+
|
|
314
|
+
_s_collection_name = 'Location' # type: ignore
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
country = Column(String(50), primary_key=True)
|
|
319
|
+
|
|
320
|
+
city = Column(String(50), primary_key=True)
|
|
321
|
+
|
|
322
|
+
notes = Column(String(256))
|
|
323
|
+
|
|
324
|
+
allow_client_generated_ids = True
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
# parent relationships (access parent)
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
# child relationships (access children)
|
|
333
|
+
|
|
334
|
+
OrderList : Mapped[List[\"Order\"]] = relationship(back_populates=\"Location\")
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
class Product(Base): # type: ignore
|
|
343
|
+
|
|
344
|
+
__tablename__ = 'Product'
|
|
345
|
+
|
|
346
|
+
_s_collection_name = 'Product' # type: ignore
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
Id = Column(Integer, primary_key=True)
|
|
351
|
+
|
|
352
|
+
ProductName = Column(String(8000))
|
|
353
|
+
|
|
354
|
+
SupplierId = Column(Integer, nullable=False)
|
|
355
|
+
|
|
356
|
+
CategoryId = Column(Integer, nullable=False)
|
|
357
|
+
|
|
358
|
+
QuantityPerUnit = Column(String(8000))
|
|
359
|
+
|
|
360
|
+
UnitPrice : DECIMAL = Column(DECIMAL, nullable=False)
|
|
361
|
+
|
|
362
|
+
UnitsInStock = Column(Integer, nullable=False)
|
|
363
|
+
|
|
364
|
+
UnitsOnOrder = Column(Integer, nullable=False)
|
|
365
|
+
|
|
366
|
+
ReorderLevel = Column(Integer, nullable=False)
|
|
367
|
+
|
|
368
|
+
Discontinued = Column(Integer, nullable=False)
|
|
369
|
+
|
|
370
|
+
UnitsShipped = Column(Integer)
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
# parent relationships (access parent)
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
# child relationships (access children)
|
|
379
|
+
|
|
380
|
+
OrderDetailList : Mapped[List[\"OrderDetail\"]] = relationship(back_populates=\"Product\")
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
t_ProductDetails_View = Table(
|
|
389
|
+
|
|
390
|
+
'ProductDetails_View', metadata,
|
|
391
|
+
|
|
392
|
+
Column('Id', Integer),
|
|
393
|
+
|
|
394
|
+
Column('ProductName', String(8000)),
|
|
395
|
+
|
|
396
|
+
Column('SupplierId', Integer),
|
|
397
|
+
|
|
398
|
+
Column('CategoryId', Integer),
|
|
399
|
+
|
|
400
|
+
Column('QuantityPerUnit', String(8000)),
|
|
401
|
+
|
|
402
|
+
Column('UnitPrice', DECIMAL),
|
|
403
|
+
|
|
404
|
+
Column('UnitsInStock', Integer),
|
|
405
|
+
|
|
406
|
+
Column('UnitsOnOrder', Integer),
|
|
407
|
+
|
|
408
|
+
Column('ReorderLevel', Integer),
|
|
409
|
+
|
|
410
|
+
Column('Discontinued', Integer),
|
|
411
|
+
|
|
412
|
+
Column('UnitsShipped', Integer),
|
|
413
|
+
|
|
414
|
+
Column('CategoryName_ColumnName', String(8000)),
|
|
415
|
+
|
|
416
|
+
Column('CategoryDescription', String(8000)),
|
|
417
|
+
|
|
418
|
+
Column('SupplierName', String(8000)),
|
|
419
|
+
|
|
420
|
+
Column('SupplierRegion', String(8000))
|
|
421
|
+
|
|
422
|
+
)
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
class Region(Base): # type: ignore
|
|
429
|
+
|
|
430
|
+
__tablename__ = 'Region'
|
|
431
|
+
|
|
432
|
+
_s_collection_name = 'Region' # type: ignore
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
Id = Column(Integer, primary_key=True)
|
|
437
|
+
|
|
438
|
+
RegionDescription = Column(String(8000))
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
# parent relationships (access parent)
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
# child relationships (access children)
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
class SampleDBVersion(Base): # type: ignore
|
|
455
|
+
|
|
456
|
+
__tablename__ = 'SampleDBVersion'
|
|
457
|
+
|
|
458
|
+
_s_collection_name = 'SampleDBVersion' # type: ignore
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
Id = Column(Integer, primary_key=True)
|
|
463
|
+
|
|
464
|
+
Notes = Column(String(800))
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
# parent relationships (access parent)
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
# child relationships (access children)
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
class Shipper(Base): # type: ignore
|
|
481
|
+
|
|
482
|
+
__tablename__ = 'Shipper'
|
|
483
|
+
|
|
484
|
+
_s_collection_name = 'Shipper' # type: ignore
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
Id = Column(Integer, primary_key=True)
|
|
489
|
+
|
|
490
|
+
CompanyName = Column(String(8000))
|
|
491
|
+
|
|
492
|
+
Phone = Column(String(8000))
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
# parent relationships (access parent)
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
# child relationships (access children)
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
class Supplier(Base): # type: ignore
|
|
509
|
+
|
|
510
|
+
__tablename__ = 'Supplier'
|
|
511
|
+
|
|
512
|
+
_s_collection_name = 'Supplier' # type: ignore
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
Id = Column(Integer, primary_key=True)
|
|
517
|
+
|
|
518
|
+
CompanyName = Column(String(8000))
|
|
519
|
+
|
|
520
|
+
ContactName = Column(String(8000))
|
|
521
|
+
|
|
522
|
+
ContactTitle = Column(String(8000))
|
|
523
|
+
|
|
524
|
+
Address = Column(String(8000))
|
|
525
|
+
|
|
526
|
+
City = Column(String(8000))
|
|
527
|
+
|
|
528
|
+
Region = Column(String(8000))
|
|
529
|
+
|
|
530
|
+
PostalCode = Column(String(8000))
|
|
531
|
+
|
|
532
|
+
Country = Column(String(8000))
|
|
533
|
+
|
|
534
|
+
Phone = Column(String(8000))
|
|
535
|
+
|
|
536
|
+
Fax = Column(String(8000))
|
|
537
|
+
|
|
538
|
+
HomePage = Column(String(8000))
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
# parent relationships (access parent)
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+
# child relationships (access children)
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
class Territory(Base): # type: ignore
|
|
555
|
+
|
|
556
|
+
__tablename__ = 'Territory'
|
|
557
|
+
|
|
558
|
+
_s_collection_name = 'Territory' # type: ignore
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
Id = Column(String(8000), primary_key=True)
|
|
563
|
+
|
|
564
|
+
TerritoryDescription = Column(String(8000))
|
|
565
|
+
|
|
566
|
+
RegionId = Column(Integer, nullable=False)
|
|
567
|
+
|
|
568
|
+
allow_client_generated_ids = True
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
# parent relationships (access parent)
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
# child relationships (access children)
|
|
577
|
+
|
|
578
|
+
EmployeeTerritoryList : Mapped[List[\"EmployeeTerritory\"]] = relationship(back_populates=\"Territory\")
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
|
|
582
|
+
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
class Union(Base): # type: ignore
|
|
587
|
+
|
|
588
|
+
__tablename__ = 'Union'
|
|
589
|
+
|
|
590
|
+
_s_collection_name = 'Union' # type: ignore
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
Id = Column(Integer, primary_key=True)
|
|
595
|
+
|
|
596
|
+
Name = Column(String(80))
|
|
597
|
+
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
# parent relationships (access parent)
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
# child relationships (access children)
|
|
605
|
+
|
|
606
|
+
EmployeeList : Mapped[List[\"Employee\"]] = relationship(back_populates=\"Union\")
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
|
|
614
|
+
class Employee(Base): # type: ignore
|
|
615
|
+
|
|
616
|
+
__tablename__ = 'Employee'
|
|
617
|
+
|
|
618
|
+
_s_collection_name = 'Employee' # type: ignore
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
Id = Column(Integer, primary_key=True)
|
|
623
|
+
|
|
624
|
+
LastName = Column(String(8000))
|
|
625
|
+
|
|
626
|
+
FirstName = Column(String(8000))
|
|
627
|
+
|
|
628
|
+
Title = Column(String(8000))
|
|
629
|
+
|
|
630
|
+
TitleOfCourtesy = Column(String(8000))
|
|
631
|
+
|
|
632
|
+
BirthDate = Column(String(8000))
|
|
633
|
+
|
|
634
|
+
HireDate = Column(String(8000))
|
|
635
|
+
|
|
636
|
+
Address = Column(String(8000))
|
|
637
|
+
|
|
638
|
+
City = Column(String(8000))
|
|
639
|
+
|
|
640
|
+
Region = Column(String(8000))
|
|
641
|
+
|
|
642
|
+
PostalCode = Column(String(8000))
|
|
643
|
+
|
|
644
|
+
Country = Column(String(8000))
|
|
645
|
+
|
|
646
|
+
HomePhone = Column(String(8000))
|
|
647
|
+
|
|
648
|
+
Extension = Column(String(8000))
|
|
649
|
+
|
|
650
|
+
Notes = Column(String(8000))
|
|
651
|
+
|
|
652
|
+
ReportsTo = Column(Integer, index=True)
|
|
653
|
+
|
|
654
|
+
PhotoPath = Column(String(8000))
|
|
655
|
+
|
|
656
|
+
EmployeeType = Column(String(16), server_default=text(\"Salaried\"))
|
|
657
|
+
|
|
658
|
+
Salary : DECIMAL = Column(DECIMAL)
|
|
659
|
+
|
|
660
|
+
WorksForDepartmentId = Column(ForeignKey('Department.Id'))
|
|
661
|
+
|
|
662
|
+
OnLoanDepartmentId = Column(ForeignKey('Department.Id'))
|
|
663
|
+
|
|
664
|
+
UnionId = Column(ForeignKey('Union.Id'))
|
|
665
|
+
|
|
666
|
+
Dues : DECIMAL = Column(DECIMAL)
|
|
667
|
+
|
|
668
|
+
Email = Column(Text)
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
|
|
672
|
+
# parent relationships (access parent)
|
|
673
|
+
|
|
674
|
+
OnLoanDepartment : Mapped[\"Department\"] = relationship(foreign_keys='[Employee.OnLoanDepartmentId]', back_populates=(\"EmployeeList\"))
|
|
675
|
+
|
|
676
|
+
Union : Mapped[\"Union\"] = relationship(back_populates=(\"EmployeeList\"))
|
|
677
|
+
|
|
678
|
+
WorksForDepartment : Mapped[\"Department\"] = relationship(foreign_keys='[Employee.WorksForDepartmentId]', back_populates=(\"WorksForEmployeeList\"))
|
|
679
|
+
|
|
680
|
+
|
|
681
|
+
|
|
682
|
+
# child relationships (access children)
|
|
683
|
+
|
|
684
|
+
EmployeeAuditList : Mapped[List[\"EmployeeAudit\"]] = relationship(back_populates=\"Employee\")
|
|
685
|
+
|
|
686
|
+
EmployeeTerritoryList : Mapped[List[\"EmployeeTerritory\"]] = relationship(back_populates=\"Employee\")
|
|
687
|
+
|
|
688
|
+
OrderList : Mapped[List[\"Order\"]] = relationship(back_populates=\"Employee\")
|
|
689
|
+
|
|
690
|
+
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
class EmployeeAudit(Base): # type: ignore
|
|
697
|
+
|
|
698
|
+
__tablename__ = 'EmployeeAudit'
|
|
699
|
+
|
|
700
|
+
_s_collection_name = 'EmployeeAudit' # type: ignore
|
|
701
|
+
|
|
702
|
+
|
|
703
|
+
|
|
704
|
+
Id = Column(Integer, primary_key=True)
|
|
705
|
+
|
|
706
|
+
Title = Column(String)
|
|
707
|
+
|
|
708
|
+
Salary : DECIMAL = Column(DECIMAL)
|
|
709
|
+
|
|
710
|
+
LastName = Column(String)
|
|
711
|
+
|
|
712
|
+
FirstName = Column(String)
|
|
713
|
+
|
|
714
|
+
EmployeeId = Column(ForeignKey('Employee.Id'))
|
|
715
|
+
|
|
716
|
+
CreatedOn = Column(Text)
|
|
717
|
+
|
|
718
|
+
UpdatedOn = Column(Text)
|
|
719
|
+
|
|
720
|
+
CreatedBy = Column(Text)
|
|
721
|
+
|
|
722
|
+
UpdatedBy = Column(Text)
|
|
723
|
+
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
# parent relationships (access parent)
|
|
727
|
+
|
|
728
|
+
Employee : Mapped[\"Employee\"] = relationship(back_populates=(\"EmployeeAuditList\"))
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
|
|
732
|
+
# child relationships (access children)
|
|
733
|
+
|
|
734
|
+
|
|
735
|
+
|
|
736
|
+
|
|
737
|
+
|
|
738
|
+
|
|
739
|
+
|
|
740
|
+
class EmployeeTerritory(Base): # type: ignore
|
|
741
|
+
|
|
742
|
+
__tablename__ = 'EmployeeTerritory'
|
|
743
|
+
|
|
744
|
+
_s_collection_name = 'EmployeeTerritory' # type: ignore
|
|
745
|
+
|
|
746
|
+
|
|
747
|
+
|
|
748
|
+
Id = Column(String(8000), primary_key=True)
|
|
749
|
+
|
|
750
|
+
EmployeeId = Column(ForeignKey('Employee.Id'), nullable=False)
|
|
751
|
+
|
|
752
|
+
TerritoryId = Column(ForeignKey('Territory.Id'))
|
|
753
|
+
|
|
754
|
+
allow_client_generated_ids = True
|
|
755
|
+
|
|
756
|
+
|
|
757
|
+
|
|
758
|
+
# parent relationships (access parent)
|
|
759
|
+
|
|
760
|
+
Employee : Mapped[\"Employee\"] = relationship(back_populates=(\"EmployeeTerritoryList\"))
|
|
761
|
+
|
|
762
|
+
Territory : Mapped[\"Territory\"] = relationship(back_populates=(\"EmployeeTerritoryList\"))
|
|
763
|
+
|
|
764
|
+
|
|
765
|
+
|
|
766
|
+
# child relationships (access children)
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
|
|
773
|
+
|
|
774
|
+
class Order(Base): # type: ignore
|
|
775
|
+
|
|
776
|
+
__tablename__ = 'Order'
|
|
777
|
+
|
|
778
|
+
_s_collection_name = 'Order' # type: ignore
|
|
779
|
+
|
|
780
|
+
__table_args__ = (
|
|
781
|
+
|
|
782
|
+
ForeignKeyConstraint(['Country', 'City'], ['Location.country', 'Location.city']),
|
|
783
|
+
|
|
784
|
+
)
|
|
785
|
+
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
Id = Column(Integer, primary_key=True)
|
|
789
|
+
|
|
790
|
+
CustomerId = Column(ForeignKey('Customer.Id'), nullable=False, index=True)
|
|
791
|
+
|
|
792
|
+
EmployeeId = Column(ForeignKey('Employee.Id'), nullable=False, index=True)
|
|
793
|
+
|
|
794
|
+
OrderDate = Column(String(8000))
|
|
795
|
+
|
|
796
|
+
RequiredDate = Column(Date)
|
|
797
|
+
|
|
798
|
+
ShippedDate = Column(String(8000))
|
|
799
|
+
|
|
800
|
+
ShipVia = Column(Integer)
|
|
801
|
+
|
|
802
|
+
Freight : DECIMAL = Column(DECIMAL, server_default=text(\"0\"))
|
|
803
|
+
|
|
804
|
+
ShipName = Column(String(8000))
|
|
805
|
+
|
|
806
|
+
ShipAddress = Column(String(8000))
|
|
807
|
+
|
|
808
|
+
ShipCity = Column(String(8000))
|
|
809
|
+
|
|
810
|
+
ShipRegion = Column(String(8000))
|
|
811
|
+
|
|
812
|
+
ShipPostalCode = Column(String(8000))
|
|
813
|
+
|
|
814
|
+
ShipCountry = Column(String(8000))
|
|
815
|
+
|
|
816
|
+
AmountTotal : DECIMAL = Column(DECIMAL(10, 2))
|
|
817
|
+
|
|
818
|
+
Country = Column(String(50))
|
|
819
|
+
|
|
820
|
+
City = Column(String(50))
|
|
821
|
+
|
|
822
|
+
Ready = Column(Boolean)
|
|
823
|
+
|
|
824
|
+
OrderDetailCount = Column(Integer, server_default=text(\"0\"))
|
|
825
|
+
|
|
826
|
+
CloneFromOrder = Column(ForeignKey('Order.Id'))
|
|
827
|
+
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
# parent relationships (access parent)
|
|
831
|
+
|
|
832
|
+
Order : Mapped[\"Order\"] = relationship(remote_side=[Id], back_populates=(\"OrderList\"))
|
|
833
|
+
|
|
834
|
+
Location : Mapped[\"Location\"] = relationship(back_populates=(\"OrderList\"))
|
|
835
|
+
|
|
836
|
+
Customer : Mapped[\"Customer\"] = relationship(back_populates=(\"OrderList\"))
|
|
837
|
+
|
|
838
|
+
Employee : Mapped[\"Employee\"] = relationship(back_populates=(\"OrderList\"))
|
|
839
|
+
|
|
840
|
+
|
|
841
|
+
|
|
842
|
+
# child relationships (access children)
|
|
843
|
+
|
|
844
|
+
OrderList : Mapped[List[\"Order\"]] = relationship(back_populates=\"Order\")
|
|
845
|
+
|
|
846
|
+
OrderDetailList : Mapped[List[\"OrderDetail\"]] = relationship(back_populates=\"Order\")
|
|
847
|
+
|
|
848
|
+
|
|
849
|
+
|
|
850
|
+
|
|
851
|
+
|
|
852
|
+
|
|
853
|
+
|
|
854
|
+
class OrderDetail(Base): # type: ignore
|
|
855
|
+
|
|
856
|
+
__tablename__ = 'OrderDetail'
|
|
857
|
+
|
|
858
|
+
_s_collection_name = 'OrderDetail' # type: ignore
|
|
859
|
+
|
|
860
|
+
|
|
861
|
+
|
|
862
|
+
Id = Column(Integer, primary_key=True)
|
|
863
|
+
|
|
864
|
+
OrderId = Column(ForeignKey('Order.Id'), nullable=False, index=True)
|
|
865
|
+
|
|
866
|
+
ProductId = Column(ForeignKey('Product.Id'), nullable=False, index=True)
|
|
867
|
+
|
|
868
|
+
UnitPrice : DECIMAL = Column(DECIMAL)
|
|
869
|
+
|
|
870
|
+
Quantity = Column(Integer, server_default=text(\"1\"), nullable=False)
|
|
871
|
+
|
|
872
|
+
Discount = Column(Double, server_default=text(\"0\"))
|
|
873
|
+
|
|
874
|
+
Amount : DECIMAL = Column(DECIMAL)
|
|
875
|
+
|
|
876
|
+
ShippedDate = Column(String(8000))
|
|
877
|
+
|
|
878
|
+
|
|
879
|
+
|
|
880
|
+
# parent relationships (access parent)
|
|
881
|
+
|
|
882
|
+
Order : Mapped[\"Order\"] = relationship(back_populates=(\"OrderDetailList\"))
|
|
883
|
+
|
|
884
|
+
Product : Mapped[\"Product\"] = relationship(back_populates=(\"OrderDetailList\"))
|
|
885
|
+
|
|
886
|
+
|
|
887
|
+
|
|
888
|
+
# child relationships (access children)
|
|
889
|
+
|
|
890
|
+
Graph Sales by Category"
|
|
891
|
+
}
|
|
892
|
+
]
|