mirror of
https://github.com/WCBROW01/zblock.git
synced 2025-12-12 04:28:07 -05:00
Move exists check to the add command instead of the database insert routine so it can run earlier
This commit is contained in:
13
feed_info.c
13
feed_info.c
@ -126,21 +126,10 @@ zblock_feed_info_err zblock_feed_info_exists(PGconn *conn, const char *url, u64s
|
||||
return ZBLOCK_FEED_INFO_OK;
|
||||
}
|
||||
|
||||
// Insert new feed into the database
|
||||
// Insert new feed into the database. This function assumes that you have already verified that it has not been added previously.
|
||||
zblock_feed_info_err zblock_feed_info_insert(PGconn *conn, zblock_feed_info *feed) {
|
||||
if (!conn || !feed) return ZBLOCK_FEED_INFO_INVALID_ARGS;
|
||||
|
||||
// check if the feed already exists
|
||||
{
|
||||
int feed_exists;
|
||||
zblock_feed_info_err exists_error = zblock_feed_info_exists(conn, feed->url, feed->channel_id, &feed_exists);
|
||||
if (exists_error) {
|
||||
return exists_error;
|
||||
} else if (feed_exists) {
|
||||
return ZBLOCK_FEED_INFO_EXISTS;
|
||||
}
|
||||
}
|
||||
|
||||
uint64_t channel_id_be = htobe64(feed->channel_id);
|
||||
uint64_t guild_id_be = htobe64(feed->guild_id);
|
||||
const char *const insert_params[] = {feed->url, feed->last_pubDate, (char *) &channel_id_be, feed->title, (char *) &guild_id_be};
|
||||
|
||||
@ -54,7 +54,7 @@ zblock_feed_info_err zblock_feed_info_retrieve_list_item(PGconn *conn, zblock_fe
|
||||
// check if the feed currently exists. the result is in the exists pointer.
|
||||
zblock_feed_info_err zblock_feed_info_exists(PGconn *conn, const char *url, u64snowflake channel_id, int *exists);
|
||||
|
||||
// Insert new feed into the database
|
||||
// Insert new feed into the database. This function assumes that you have already verified that it has not been added previously.
|
||||
zblock_feed_info_err zblock_feed_info_insert(PGconn *conn, zblock_feed_info *feed);
|
||||
|
||||
// deletes feed from the database
|
||||
|
||||
13
main.c
13
main.c
@ -226,6 +226,19 @@ static void bot_command_add(struct discord *client, const struct discord_interac
|
||||
feed.channel_id = event->channel_id;
|
||||
feed.guild_id = event->guild_id;
|
||||
|
||||
// check if the feed already exists
|
||||
{
|
||||
int feed_exists;
|
||||
zblock_feed_info_err exists_error = zblock_feed_info_exists(database_conn, feed.url, feed.channel_id, &feed_exists);
|
||||
if (exists_error) {
|
||||
snprintf(msg, sizeof(msg), "Error adding feed: %s", zblock_feed_info_strerror(exists_error));
|
||||
goto send_msg;
|
||||
} else if (feed_exists) {
|
||||
snprintf(msg, sizeof(msg), "Error adding feed: It has already been added to this channel");
|
||||
goto send_msg;
|
||||
}
|
||||
}
|
||||
|
||||
mrss_t *mrss_feed;
|
||||
mrss_error_t mrss_error = mrss_parse_url(feed.url, &mrss_feed);
|
||||
if (mrss_error) {
|
||||
|
||||
Reference in New Issue
Block a user