Add zblock_feed_info_update

This commit is contained in:
2024-11-23 15:33:10 -05:00
parent 44b1f80b9e
commit ca6d37a1cf
3 changed files with 29 additions and 15 deletions

View File

@ -95,3 +95,27 @@ zblock_feed_info_err zblock_feed_info_insert(PGconn *conn, zblock_feed_info *fee
PQclear(insert_res); PQclear(insert_res);
return result; return result;
} }
// updates the last_pubDate field of a given feed in the database
zblock_feed_info_err zblock_feed_info_update(PGconn *conn, zblock_feed_info_minimal *feed) {
if (!conn || !feed) return ZBLOCK_FEED_INFO_INVALID_ARGS;
char channel_id_str[21]; // hold a 64-bit int in decimal form
snprintf(channel_id_str, sizeof(channel_id_str), "%ld", feed->channel_id);
const char *const update_params[] = {feed->last_pubDate, feed->url, channel_id_str};
// save the updated pubDate to disk once that's implemented
PGresult *update_res = PQexecParams(conn,
"UPDATE feeds SET last_pubDate = $1 WHERE url = $2 AND channel_id = $3",
3, NULL, update_params, NULL, NULL, 0
);
zblock_feed_info_err result = ZBLOCK_FEED_INFO_OK;
if (PQresultStatus(update_res) != PGRES_COMMAND_OK) {
log_error("Failed to update feed: %s", PQresultErrorMessage(update_res));
result = ZBLOCK_FEED_INFO_DBERROR;
}
PQclear(update_res);
return result;
}

View File

@ -42,4 +42,7 @@ zblock_feed_info_err zblock_feed_info_exists(PGconn *conn, const char *url, u64s
// Insert new feed into the database // Insert new feed into the database
zblock_feed_info_err zblock_feed_info_insert(PGconn *conn, zblock_feed_info *feed); zblock_feed_info_err zblock_feed_info_insert(PGconn *conn, zblock_feed_info *feed);
// updates the last_pubDate field of a given feed in the database
zblock_feed_info_err zblock_feed_info_update(PGconn *conn, zblock_feed_info_minimal *feed);
#endif #endif

17
main.c
View File

@ -155,21 +155,8 @@ static void timer_retrieve_feeds(struct discord *client, struct discord_timer *t
} }
if (update_pubDate) { if (update_pubDate) {
char *current_pubDate = mrss_feed->item->pubDate; feed_buffer->info.url = mrss_feed->item->pubDate;
char channel_id_str[21]; // hold a 64-bit int in decimal form zblock_feed_info_update(database_conn, &feed_buffer->info);
snprintf(channel_id_str, sizeof(channel_id_str), "%ld", feed_buffer->info.channel_id);
const char *const update_params[] = {current_pubDate, feed_buffer->info.url, channel_id_str};
// save the updated pubDate to disk once that's implemented
PGresult *update_res = PQexecParams(database_conn,
"UPDATE feeds SET last_pubDate = $1 WHERE url = $2 AND channel_id = $3",
3, NULL, update_params, NULL, NULL, 0
);
if (PQresultStatus(update_res) != PGRES_COMMAND_OK) {
log_error("Failed to update pubDate: %s", PQresultErrorMessage(update_res)); // cry
}
PQclear(update_res);
} }
// done with our feed! // done with our feed!