potiuk opened a new pull request, #29776:
URL: https://github.com/apache/airflow/pull/29776

   Add basic serialization capabilities for the ORM SqlAlchemy models that we 
use on the client side of the Internal API. Serializing the whole ORM models is 
rather complex, therefore it seems much more reasonable to convert the ORM 
models into serializable form and use them - rather than the SQLAlchemy models.
   
   There are just a handful of those models that we need to serialize, and it 
is important to maintain typing of the fields in the objects for MyPy 
verification so we can allow some level of duplication and redefine the models 
as pure Python objects.
   
   We only need one-way converstion (from database models to Python models), 
because all the DB operations and modifications of the Database entries will be 
done in the internal API server, so the server side of any method will be able 
to use primary key stored in the serializable object, to retrieve the actual DB 
model to update.
   
   We also need to serialization to work both way - an easy way to convert such 
Python classees to json and back - including validation.
   
   We could serialize those models manually, but this would be quite an 
overhead to develop and maintain - therefore we are harnessing the power of 
Pydantic, that has already ORM mapping to plain Python (Pydantic) classes built 
in.
   
   This PR implements definition of the Pydantic classes and tests for the 
classes testing:
   
   * conversion of the ORM models to Pydantic objects
   * serialization of the Pydantic classes to json
   * deserialization of the json-serialized classes to Pydantic objects
   
   <!--
   Thank you for contributing! Please make sure that your code changes
   are covered with tests. And in case of new features or big changes
   remember to adjust the documentation.
   
   Feel free to ping committers for the review!
   
   In case of an existing issue, reference it using one of the following:
   
   closes: #ISSUE
   related: #ISSUE
   
   How to write a good git commit message:
   http://chris.beams.io/posts/git-commit/
   -->
   
   ---
   **^ Add meaningful description above**
   
   Read the **[Pull Request 
Guidelines](https://github.com/apache/airflow/blob/main/CONTRIBUTING.rst#pull-request-guidelines)**
 for more information.
   In case of fundamental code changes, an Airflow Improvement Proposal 
([AIP](https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Improvement+Proposals))
 is needed.
   In case of a new dependency, check compliance with the [ASF 3rd Party 
License Policy](https://www.apache.org/legal/resolved.html#category-x).
   In case of backwards incompatible changes please leave a note in a 
newsfragment file, named `{pr_number}.significant.rst` or 
`{issue_number}.significant.rst`, in 
[newsfragments](https://github.com/apache/airflow/tree/main/newsfragments).
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to