55from typing import Optional
66BASE_DIR = (Path (__file__ ).resolve ().parent .parent )/ "data" / "clean"
77
8+
89def load_news (clean_news :str , max_rows : Optional [int ] = None )-> int :
910 LOAD_DIR = BASE_DIR / clean_news
1011 num_of_news = 0
@@ -95,29 +96,39 @@ def load_user_news(cur, user_id: int, search_request_id: int, article_id: int, k
9596 cur .execute (query ,(user_id , search_request_id , article_id , keyword , fetched_at ))
9697 return cur .rowcount
9798
98- def load_request_stats (cur , search_request_id : int , stats : dict ) -> None :
99+ def load_request_stats (search_request_id : int , stats : dict ) -> None :
99100 query = """
100101 INSERT INTO request_stats (
101102 search_request_id,
102103 income_articles,
103104 accepted_articles,
104105 rejected_articles,
105106 reasons_counts,
106- prime_reason
107+ prime_reasons
107108 )
108109 VALUES (%s,%s,%s,%s,%s,%s)
110+ ON CONFLICT (search_request_id) DO UPDATE
111+ SET
112+ income_articles = EXCLUDED.income_articles,
113+ accepted_articles = EXCLUDED.accepted_articles,
114+ rejected_articles = EXCLUDED.rejected_articles,
115+ reasons_counts = EXCLUDED.reasons_counts,
116+ prime_reasons = EXCLUDED.prime_reasons
109117 """
110- cur .execute (query , (
118+
119+ with get_cursor (settings .db_news ) as (conn , cur ):
120+ cur .execute (query , (
111121 search_request_id ,
112122 stats ["income_articles" ],
113123 stats ["accepted_articles" ],
114124 stats ["rejected_articles" ],
115125 json .dumps (stats ["reasons_counts" ]),
116126 json .dumps (stats ["prime_reason" ])
117127 ))
118- return None
128+ conn .commit ()
129+
119130
120- def load_web_pipeline (user_id : int , search_request_id : int , clean_data : list [dict ], stats : dict ) -> int :
131+ def load_web_pipeline (user_id : int , search_request_id : int , clean_data : list [dict ]) -> int :
121132 loaded_count = 0
122133 with get_cursor (settings .db_news ) as (conn , cur ):
123134 for article in clean_data :
@@ -126,7 +137,6 @@ def load_web_pipeline(user_id: int, search_request_id: int, clean_data: list[dic
126137 article_id = upsert_article (cur ,article )
127138 inserted = load_user_news (cur , user_id , search_request_id , article_id , keyword , fetched_at )
128139 loaded_count += inserted
129- load_request_stats (cur , search_request_id , stats )
130140 conn .commit ()
131141 return loaded_count
132142
0 commit comments