2525)
2626from app .schemas .info_base .relation import RelationID , RelationModel
2727from app .schemas .info_base .main import Vector
28+ from app .schemas .info_base .storage import StorageID
2829
2930if typing .TYPE_CHECKING :
3031 from app .business .info_base .resolver import Resolver
@@ -137,7 +138,7 @@ async def fetchsert(cls, block: BlockModel, db_session: sqlmodel.Session) -> Blo
137138 db_session .flush ()
138139 db_session .refresh (block )
139140 # and embedding - use sink service
140- await EmbeddingManager .upsert_block_embedding (block , db_session )
141+ await EmbeddingManager .upsert_block_embedding (block = block , db_session = db_session )
141142
142143 return block
143144
@@ -149,15 +150,15 @@ async def organize(cls, block: BlockModel):
149150 """
150151 with SessionLocal () as db_session :
151152 resolver = ResolverManager .get (block )
152- generator = ( await resolver .breakdown ()) ()
153+ generator = resolver .breakdown ()
153154 try :
154- i = generator . send ( None )
155+ item = await anext ( generator )
155156 while True :
156- db_session .add (i )
157+ db_session .add (item )
157158 db_session .flush ()
158- db_session .refresh (i )
159- i = generator .send ( i )
160- except StopIteration :
159+ db_session .refresh (item )
160+ item = await generator .asend ( item )
161+ except StopAsyncIteration :
161162 pass
162163
163164 db_session .commit ()
@@ -209,16 +210,19 @@ def iterate_one(inner_block_id: int):
209210 sqlmodel .select (RelationModel ).where (RelationModel .from_ == inner_block_id )
210211 ).all ()
211212
212- r_relations .update (relation .id for relation in relations )
213+ r_relations .update (relation .id for relation in relations if relation . id is not None )
213214
214215 for relation in relations :
215216 block = db_session .exec (
216217 sqlmodel .select (BlockModel ).where (BlockModel .id == relation .to_ )
217218 ).one ()
218- r_blocks .add (block .id )
219+ persisted_block_id = block .id
220+ if persisted_block_id is None :
221+ raise RuntimeError ("Persisted block is missing its database ID" )
222+ r_blocks .add (persisted_block_id )
219223
220224 if depth <= max_depth :
221- iterate_one (block . id )
225+ iterate_one (persisted_block_id )
222226
223227 depth += 1
224228
@@ -372,7 +376,7 @@ def edit_block(
372376 block_id : BlockID ,
373377 content : Opt [str ] = None ,
374378 resolver : Opt [ResolverType ] = None ,
375- storage : Opt [str ] | Undefined = _undefined ,
379+ storage : Opt [StorageID ] | Undefined = _undefined ,
376380 ) -> BlockModel :
377381 """编辑块"""
378382 logger .info ("Editing block" , extra = {"block_id" : block_id })
0 commit comments