Skip to content

taido028/gql_workflow

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GQL_WorkFlow

Zadání

  1. Entity (WorkflowGQLModel, WorkflowStateGQLModel, WorkflowTransitionGQLModel)

  2. Entity (WorkflowStateUserGQLModel, WorkflowStateRoleGQLModel)

  3. Modely v databázi pomocí SQLAlchemy, API endpoint typu GraphQL s pomocí knihovny Strawberry.

  4. Přístup k databázi řešte důsledně přes AioDataloder, resp. (https://github.com/hrbolek/uoishelpers/blob/main/uoishelpers/dataloaders.py).

  5. Zabezpečte kompletní CRUD operace nad entitami Modelu

  6. CUD operace jako návratový typ nejméně se třemi prvky id, msg a „entityresult“ (pojmenujte adekvátně podle dotčené entity), vhodné přidat možnost nadřízené entity, speciálně pro operaci D.

  7. Řešte autorizaci operací (permission classes).

  8. Kompletní CRUD dotazy na GQL v souboru externalids_queries.json (dictionary), jméno klíče nechť vhodně identifikuje operaci, hodnota je dictionary s klíči query (obsahuje parametrický dotaz) nebo mutation (obsahuje parametrické mutation) a variables (obsahuje dictionary jako testovací hodnoty).

  9. Kompletní popisy API v kódu (description u GQLModelů) a popisy DB vrstvy (comment u DBModelů).

  10. Zabezpečte více jak 90% code test coverage (standard pytest).

Plán postupu

  • 16.10. - příprava na 1. projektový den, vytvořený GitHub repository, zprovozněný Docker
  • 23.10. - 26.11. - bližší seznámení s projektem, porozuměmní technikám, příprava na 2. projektový den, příprava RU operací
  • 27.11. - prezentace postupu na 2. projektovém dnu
  • 27.11. - 8.12. - implementace CRU operací
  • 10.12. - začatek testování
  • 11.12. - 13.12. - oprava chyb, testování
  • 5.1 - 10.1 - permission classes
  • 11.1 - 20.1 - finalizace, testování, oprava chyb

Spuštění testy

pytest --cov-report term-missing --cov=DBDefinitions --cov=GraphTypeDefinitions --cov=utils --log-cli-level=INFO -x

pytest --cov-report term-missing --cov=DBDefinitions --cov=GraphTypeDefinitions --cov=utils --log-cli-level=INFO -x tests

.env file

DEMO=True
DEMOUSER={"id": "2d9dc5ca-a4a2-11ed-b9df-0242ac120003", "name": "John", "surname": "Newbie"}
JWTPUBLICKEY=http://localhost:8000/oauth/publickey
JWTRESOLVEUSERPATH=http://localhost:8000/oauth/userinfo
GQLUG_ENDPOINT_URL=http://localhost:8000/gql

Uvicorn

uvicorn main:app --env-file environment.txt --port 8000 --reload

Pytest coverage report

---------- coverage: platform win32, python 3.10.10-final-0 ----------
Name                                                    Stmts   Miss  Cover   Missing
-------------------------------------------------------------------------------------
DBDefinitions\AuthorizationGroupModel.py                   15      0   100%
DBDefinitions\AuthorizationModel.py                         8      0   100%
DBDefinitions\AuthorizationRoleTypeModel.py                16      0   100%
DBDefinitions\AuthorizationUserModel.py                    15      0   100%
DBDefinitions\Base.py                                       2      0   100%
DBDefinitions\WorkflowModel.py                             17      0   100%
DBDefinitions\WorkflowStateModel.py                        17      0   100%
DBDefinitions\WorkflowStateRoleTypeModel.py                18      0   100%
DBDefinitions\WorkflowStateUserModel.py                    19      0   100%
DBDefinitions\WorkflowTransitionModel.py                   19      0   100%
DBDefinitions\__init__.py                                  36      1    97%   36
DBDefinitions\uuid.py                                       9      0   100%
GraphTypeDefinitions\BaseGQLModel.py                       14      0   100%
GraphTypeDefinitions\_GraphPermissions.py                  88     48    45%   150-164, 174-177, 197-198, 219-287
GraphTypeDefinitions\_GraphResolvers.py                    77      3    96%   298-300
GraphTypeDefinitions\__init__.py                           55      0   100%
GraphTypeDefinitions\authorizationGQLModel.py               0      0   100%
GraphTypeDefinitions\authorizationGroupGQLModel.py          0      0   100%
GraphTypeDefinitions\authorizationRoleTypeGQLModel.py       0      0   100%
GraphTypeDefinitions\authorizationUserGQLModel.py           0      0   100%
GraphTypeDefinitions\externals.py                          25      0   100%
GraphTypeDefinitions\utils.py                               0      0   100%
GraphTypeDefinitions\workflowGQLModel.py                   85      0   100%
GraphTypeDefinitions\workflowStateGQLModel.py             111      0   100%
GraphTypeDefinitions\workflowStateRoleTypeGQLModel.py      80      0   100%
GraphTypeDefinitions\workflowStateUserGQLModel.py          80      0   100%
GraphTypeDefinitions\workflowTransitionGQLModel.py        114      2    98%   240-241
utils\DBFeeder.py                                          37      0   100%
utils\Dataloaders.py                                      129     12    91%   69, 83-102
utils\__init__.py                                           0      0   100%
utils\gql_ug_proxy.py                                      29      0   100%
utils\sentinel.py                                           8      0   100%
-------------------------------------------------------------------------------------
TOTAL                                                    1123     66    94%

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.4%
  • Dockerfile 0.6%