1- """An example of how to use Client & Model together."""
1+ """An example of how to use AsyncClient & AsyncModel together."""
22
33import asyncio
44import json
77from uuid import uuid4 , UUID
88from typing import Any , List
99
10- from db_wrapper import ConnectionParameters , Client , Model
10+ from db_wrapper import ConnectionParameters , AsyncClient , AsyncModel
1111
12- from models import AModel , ExtendedModel , ExtendedModelData
12+ from example .models import (
13+ AModel ,
14+ ExtendedModel ,
15+ ExtendedModelData ,
16+ )
1317
1418logging .basicConfig (level = logging .INFO )
1519
@@ -33,17 +37,17 @@ def default(self, obj: Any) -> Any:
3337 user = os .getenv ('DB_USER' , 'test' ),
3438 password = os .getenv ('DB_PASS' , 'pass' ),
3539 database = os .getenv ('DB_NAME' , 'dev' ))
36- client = Client (conn_params )
40+ client = AsyncClient (conn_params )
3741
38- a_model = Model [AModel ](client , 'a_model' )
42+ a_model = AsyncModel [AModel ](client , 'a_model' , AModel )
3943extended_model = ExtendedModel (client )
4044
4145
4246async def create_a_model_record () -> UUID :
4347 """
44- Show how to use a simple Model instance.
48+ Show how to use a simple AsyncModel instance.
4549
46- Create a new record using the default Model .create.one method.
50+ Create a new record using the default AsyncModel .create.one method.
4751 """
4852 new_record = AModel (** {
4953 'id' : uuid4 (),
@@ -59,13 +63,13 @@ async def create_a_model_record() -> UUID:
5963
6064async def read_a_model (id_value : UUID ) -> AModel :
6165 """Show how to read a record with a given id value."""
62- # read.one_by_id expects a string, so UUID values need
63- # converted using str()
64- return await a_model .read .one_by_id (str (id_value ))
66+ return await a_model .read .one_by_id (id_value )
6567
6668
6769async def create_extended_models () -> None :
68- """Show how using an extended Model can be the same as the defaults."""
70+ """
71+ Show how using an extended AsyncModel can be the same as the defaults.
72+ """
6973 dicts = [{
7074 'id' : uuid4 (),
7175 'string' : 'something' ,
@@ -101,7 +105,7 @@ async def read_extended_models() -> List[ExtendedModelData]:
101105 """Show how to use an extended Model's new methods."""
102106 # We defined read.all in ./models/extended_model.py's ExtendedRead class,
103107 # then replaced ExtendedModel's read property with ExtendedRead.
104- # As a result, we can call it just like any other method on Model .read.
108+ # As a result, we can call it just like any other method on AsyncModel .read
105109 return await extended_model .read .all ()
106110
107111
@@ -119,13 +123,15 @@ async def run() -> None:
119123 new_id = await create_a_model_record ()
120124 created_a_model = await read_a_model (new_id )
121125 await create_extended_models ()
122- extended_models = await read_extended_models ()
126+ created_extended_models = await read_extended_models ()
123127 finally :
124128 await client .disconnect ()
125129
126130 # Print results to stdout
127- print (json .dumps (created_a_model , cls = UUIDJsonEncoder ))
128- print (json .dumps (extended_models , cls = UUIDJsonEncoder ))
131+ print (json .dumps (created_a_model .dict (), cls = UUIDJsonEncoder ))
132+ print (json .dumps ([model .dict ()
133+ for model in created_extended_models ],
134+ cls = UUIDJsonEncoder ))
129135
130136if __name__ == '__main__' :
131137 # A simple app can be run using asyncio's run method.
0 commit comments