@ -19,6 +19,7 @@ struct SettingsRow {
max_items_per_category : i32 ,
max_items_per_category : i32 ,
max_articles_per_source : i32 ,
max_articles_per_source : i32 ,
use_llm_for_source_links : bool ,
use_llm_for_source_links : bool ,
use_brave_search : bool ,
article_history_days : i32 ,
article_history_days : i32 ,
batch_size : i32 ,
batch_size : i32 ,
search_agent_behavior : String ,
search_agent_behavior : String ,
@ -46,6 +47,7 @@ impl TryFrom<SettingsRow> for UserSettings {
max_items_per_category : row . max_items_per_category ,
max_items_per_category : row . max_items_per_category ,
max_articles_per_source : row . max_articles_per_source ,
max_articles_per_source : row . max_articles_per_source ,
use_llm_for_source_links : row . use_llm_for_source_links ,
use_llm_for_source_links : row . use_llm_for_source_links ,
use_brave_search : row . use_brave_search ,
article_history_days : row . article_history_days ,
article_history_days : row . article_history_days ,
batch_size : row . batch_size ,
batch_size : row . batch_size ,
search_agent_behavior : row . search_agent_behavior ,
search_agent_behavior : row . search_agent_behavior ,
@ -74,10 +76,10 @@ pub async fn get_or_create_default(
let row = sqlx ::query_as ::< _ , SettingsRow > (
let row = sqlx ::query_as ::< _ , SettingsRow > (
r #"
r #"
INSERT INTO settings ( user_id , theme , max_age_days , categories , max_items_per_category , search_agent_behavior , ai_provider , ai_model , ai_model_websearch , rate_limit_max_requests , rate_limit_time_window_seconds , max_articles_per_source , use_llm_for_source_links , article_history_days, batch_size )
INSERT INTO settings ( user_id , theme , max_age_days , categories , max_items_per_category , search_agent_behavior , ai_provider , ai_model , ai_model_websearch , rate_limit_max_requests , rate_limit_time_window_seconds , max_articles_per_source , use_llm_for_source_links , use_brave_search, article_history_days, batch_size )
VALUES ( $ 1 , $ 2 , $ 3 , $ 4 , $ 5 , $ 6 , $ 7 , $ 8 , $ 9 , $ 10 , $ 11 , $ 12 , $ 13 , $ 14 , $ 15 )
VALUES ( $ 1 , $ 2 , $ 3 , $ 4 , $ 5 , $ 6 , $ 7 , $ 8 , $ 9 , $ 10 , $ 11 , $ 12 , $ 13 , $ 14 , $ 15 , $ 16 )
ON CONFLICT ( user_id ) DO UPDATE SET user_id = settings . user_id
ON CONFLICT ( user_id ) DO UPDATE SET user_id = settings . user_id
RETURNING user_id , theme , max_age_days , categories , max_items_per_category , search_agent_behavior , ai_provider , ai_model , ai_model_websearch , rate_limit_max_requests , rate_limit_time_window_seconds , max_articles_per_source , use_llm_for_source_links , article_history_days, batch_size , updated_at
RETURNING user_id , theme , max_age_days , categories , max_items_per_category , search_agent_behavior , ai_provider , ai_model , ai_model_websearch , rate_limit_max_requests , rate_limit_time_window_seconds , max_articles_per_source , use_llm_for_source_links , use_brave_search, article_history_days, batch_size , updated_at
" #,
" #,
)
)
. bind ( user_id )
. bind ( user_id )
@ -93,6 +95,7 @@ pub async fn get_or_create_default(
. bind ( defaults . rate_limit_time_window_seconds )
. bind ( defaults . rate_limit_time_window_seconds )
. bind ( defaults . max_articles_per_source )
. bind ( defaults . max_articles_per_source )
. bind ( defaults . use_llm_for_source_links )
. bind ( defaults . use_llm_for_source_links )
. bind ( defaults . use_brave_search )
. bind ( defaults . article_history_days )
. bind ( defaults . article_history_days )
. bind ( defaults . batch_size )
. bind ( defaults . batch_size )
. fetch_one ( pool )
. fetch_one ( pool )
@ -113,8 +116,8 @@ pub async fn upsert(
let row = sqlx ::query_as ::< _ , SettingsRow > (
let row = sqlx ::query_as ::< _ , SettingsRow > (
r #"
r #"
INSERT INTO settings ( user_id , theme , max_age_days , categories , max_items_per_category , search_agent_behavior , ai_provider , ai_model , ai_model_websearch , rate_limit_max_requests , rate_limit_time_window_seconds , max_articles_per_source , use_llm_for_source_links , article_history_days, batch_size )
INSERT INTO settings ( user_id , theme , max_age_days , categories , max_items_per_category , search_agent_behavior , ai_provider , ai_model , ai_model_websearch , rate_limit_max_requests , rate_limit_time_window_seconds , max_articles_per_source , use_llm_for_source_links , use_brave_search, article_history_days, batch_size )
VALUES ( $ 1 , $ 2 , $ 3 , $ 4 , $ 5 , $ 6 , $ 7 , $ 8 , $ 9 , $ 10 , $ 11 , $ 12 , $ 13 , $ 14 , $ 15 )
VALUES ( $ 1 , $ 2 , $ 3 , $ 4 , $ 5 , $ 6 , $ 7 , $ 8 , $ 9 , $ 10 , $ 11 , $ 12 , $ 13 , $ 14 , $ 15 , $ 16 )
ON CONFLICT ( user_id ) DO UPDATE SET
ON CONFLICT ( user_id ) DO UPDATE SET
theme = EXCLUDED . theme ,
theme = EXCLUDED . theme ,
max_age_days = EXCLUDED . max_age_days ,
max_age_days = EXCLUDED . max_age_days ,
@ -128,10 +131,11 @@ pub async fn upsert(
rate_limit_time_window_seconds = EXCLUDED . rate_limit_time_window_seconds ,
rate_limit_time_window_seconds = EXCLUDED . rate_limit_time_window_seconds ,
max_articles_per_source = EXCLUDED . max_articles_per_source ,
max_articles_per_source = EXCLUDED . max_articles_per_source ,
use_llm_for_source_links = EXCLUDED . use_llm_for_source_links ,
use_llm_for_source_links = EXCLUDED . use_llm_for_source_links ,
use_brave_search = EXCLUDED . use_brave_search ,
article_history_days = EXCLUDED . article_history_days ,
article_history_days = EXCLUDED . article_history_days ,
batch_size = EXCLUDED . batch_size ,
batch_size = EXCLUDED . batch_size ,
updated_at = now ( )
updated_at = now ( )
RETURNING user_id , theme , max_age_days , categories , max_items_per_category , search_agent_behavior , ai_provider , ai_model , ai_model_websearch , rate_limit_max_requests , rate_limit_time_window_seconds , max_articles_per_source , use_llm_for_source_links , article_history_days, batch_size , updated_at
RETURNING user_id , theme , max_age_days , categories , max_items_per_category , search_agent_behavior , ai_provider , ai_model , ai_model_websearch , rate_limit_max_requests , rate_limit_time_window_seconds , max_articles_per_source , use_llm_for_source_links , use_brave_search, article_history_days, batch_size , updated_at
" #,
" #,
)
)
. bind ( user_id )
. bind ( user_id )
@ -147,6 +151,7 @@ pub async fn upsert(
. bind ( req . rate_limit_time_window_seconds )
. bind ( req . rate_limit_time_window_seconds )
. bind ( req . max_articles_per_source )
. bind ( req . max_articles_per_source )
. bind ( req . use_llm_for_source_links )
. bind ( req . use_llm_for_source_links )
. bind ( req . use_brave_search )
. bind ( req . article_history_days )
. bind ( req . article_history_days )
. bind ( req . batch_size )
. bind ( req . batch_size )
. fetch_one ( pool )
. fetch_one ( pool )