@@ -240,6 +240,7 @@ async def get_paste_by_id(self, paste_id: UUID4) -> PasteResponse | None:
240240 paste_operations .labels (operation = "get" , status = "success" ).inc ()
241241 return PasteResponse (
242242 id = result .id ,
243+ user_id = result .user_id ,
243244 title = result .title ,
244245 content = content ,
245246 content_language = PasteContentLanguage (result .content_language ),
@@ -326,6 +327,7 @@ async def edit_paste(self, paste_id: UUID4, edit_paste: EditPaste, edit_token: s
326327 paste_operations .labels (operation = "edit" , status = "success" ).inc ()
327328 return PasteResponse (
328329 id = result .id ,
330+ user_id = result .user_id ,
329331 title = result .title ,
330332 content = content ,
331333 content_language = PasteContentLanguage (result .content_language ),
@@ -380,7 +382,7 @@ async def delete_paste(self, paste_id: UUID4, delete_token: str) -> bool:
380382 counter .dec ()
381383 return True
382384
383- async def create_paste (self , paste : CreatePaste , user_data : UserMetaData ) -> PasteResponse :
385+ async def create_paste (self , paste : CreatePaste , user_data : UserMetaData , user_id : uuid . UUID | None = None ) -> PasteResponse :
384386 if not self .verify_storage_limit ():
385387 paste_operations .labels (operation = "create" , status = "storage_limit" ).inc ()
386388 raise HTTPException (
@@ -426,6 +428,7 @@ async def create_paste(self, paste: CreatePaste, user_data: UserMetaData) -> Pas
426428 original_size = original_size ,
427429 edit_token = edit_token_hashed ,
428430 delete_token = delete_token_hashed ,
431+ user_id = user_id ,
429432 )
430433 session .add (entity )
431434 await session .commit ()
@@ -442,6 +445,7 @@ async def create_paste(self, paste: CreatePaste, user_data: UserMetaData) -> Pas
442445
443446 return CreatePasteResponse (
444447 id = entity .id ,
448+ user_id = entity .user_id ,
445449 title = entity .title ,
446450 content = paste .content ,
447451 content_language = PasteContentLanguage (entity .content_language ),
@@ -460,3 +464,39 @@ async def create_paste(self, paste: CreatePaste, user_data: UserMetaData) -> Pas
460464 detail = "Failed to create paste" ,
461465 headers = {"Retry-After" : "60" },
462466 ) from exc
467+
468+ async def get_user_pastes (self , user_id : uuid .UUID ) -> list [PasteResponse ]:
469+ async with self .session_maker () as session :
470+ stmt = (
471+ select (PasteEntity )
472+ .where (
473+ PasteEntity .user_id == user_id ,
474+ PasteEntity .deleted_at .is_ (None ),
475+ or_ (
476+ PasteEntity .expires_at > datetime .now (tz = UTC ),
477+ PasteEntity .expires_at .is_ (None ),
478+ ),
479+ )
480+ .order_by (PasteEntity .created_at .desc ())
481+ )
482+ results = (await session .execute (stmt )).scalars ().all ()
483+
484+ pastes = []
485+ for result in results :
486+ content = await self ._read_content (
487+ result .content_path ,
488+ is_compressed = result .is_compressed ,
489+ )
490+ pastes .append (
491+ PasteResponse (
492+ id = result .id ,
493+ user_id = result .user_id ,
494+ title = result .title ,
495+ content = content ,
496+ content_language = PasteContentLanguage (result .content_language ),
497+ created_at = result .created_at ,
498+ expires_at = result .expires_at ,
499+ last_updated_at = result .last_updated_at ,
500+ )
501+ )
502+ return pastes
0 commit comments