@@ -14,13 +14,9 @@ pip install sqlmodel-encrypted-fields
1414from sqlalchemy import Column
1515from sqlmodel import Field, SQLModel
1616
17- from sqlmodel_encrypted_fields import (
18- configure_keysets,
19- EncryptedString,
20- DeterministicEncryptedString,
21- )
17+ from sqlmodel_encrypted_fields import KeysetRegistry
2218
23- configure_keysets (
19+ registry = KeysetRegistry (
2420 {
2521 " default" : {" path" : " /path/to/aead_keyset.json" , " cleartext" : True },
2622 " searchable" : {" path" : " /path/to/daead_keyset.json" , " cleartext" : True },
@@ -30,8 +26,28 @@ configure_keysets(
3026
3127class Customer (SQLModel , table = True ):
3228 id : int | None = Field(default = None , primary_key = True )
33- email: str = Field(sa_column = Column(EncryptedString()))
34- email_lookup: str = Field(sa_column = Column(DeterministicEncryptedString(keyset = " searchable" )))
29+ email: str = Field(sa_column = Column(registry.encrypted_string()))
30+ email_lookup: str = Field(sa_column = Column(registry.deterministic_encrypted_string(keyset = " searchable" )))
31+ ```
32+
33+ ## Example Apps
34+
35+ - FastAPI example: ` example_app_fastapi/ `
36+ - Flask example: ` example_app_flask/ `
37+
38+ ### Flask Example Snippet
39+
40+ ``` python
41+ from flask import Flask
42+
43+ from example_app_flask.database import init_db
44+ from example_app_flask.models import Customer
45+
46+ app = Flask(__name__ )
47+
48+ @app.before_first_request
49+ def _init_db () -> None :
50+ init_db()
3551```
3652
3753## Notes
@@ -54,7 +70,13 @@ Regular AEAD fields change ciphertext on every write. Use deterministic fields o
5470``` python
5571from datetime import date
5672
57- from sqlmodel_encrypted_fields import EncryptedType
73+ from sqlmodel_encrypted_fields import KeysetRegistry
74+
75+ registry = KeysetRegistry(
76+ {
77+ " default" : {" path" : " /path/to/aead_keyset.json" , " cleartext" : True },
78+ }
79+ )
5880
5981
6082def serialize_date (value : date) -> str :
@@ -67,5 +89,7 @@ def deserialize_date(value: str) -> date:
6789
6890class User (SQLModel , table = True ):
6991 id : int | None = Field(default = None , primary_key = True )
70- birthday: date = Field(sa_column = EncryptedType(serializer = serialize_date, deserializer = deserialize_date))
92+ birthday: date = Field(
93+ sa_column = registry.encrypted_type(serializer = serialize_date, deserializer = deserialize_date)
94+ )
7195```
0 commit comments