@@ -141,12 +141,16 @@ async def save_content_to_db(
141
141
content_embedding = await _get_content_embeddings (
142
142
content = content , metadata = metadata
143
143
)
144
+ latest_display_number = await get_latest_display_number (
145
+ asession = asession , workspace_id = workspace_id
146
+ )
144
147
content_db = ContentDB (
145
148
content_embedding = content_embedding ,
146
149
content_metadata = content .content_metadata ,
147
150
content_tags = content .content_tags ,
148
151
content_text = content .content_text ,
149
152
content_title = content .content_title ,
153
+ display_number = latest_display_number + 1 ,
150
154
created_datetime_utc = datetime .now (timezone .utc ),
151
155
updated_datetime_utc = datetime .now (timezone .utc ),
152
156
workspace_id = workspace_id ,
@@ -563,3 +567,32 @@ async def update_votes_in_db(
563
567
content_db = await asession .merge (content_db )
564
568
await asession .commit ()
565
569
return content_db
570
+
571
+
572
+ async def get_latest_display_number (
573
+ * , asession : AsyncSession , workspace_id : int
574
+ ) -> int :
575
+ """Get the latest display number from the database.
576
+
577
+ Parameters
578
+ ----------
579
+ asession
580
+ The SQLAlchemy async session to use for all database connections.
581
+ workspace_id
582
+ The ID of the workspace to get the latest display number from.
583
+
584
+ Returns
585
+ -------
586
+ int
587
+ The latest display number if it exists, otherwise 0.
588
+ """
589
+
590
+ stmt = (
591
+ select (ContentDB .display_number )
592
+ .where (ContentDB .workspace_id == workspace_id )
593
+ .order_by (ContentDB .display_number .desc ())
594
+ .limit (1 )
595
+ )
596
+ result = await asession .execute (stmt )
597
+ latest_display_number = result .scalar_one_or_none ()
598
+ return latest_display_number or 0
0 commit comments