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;
|
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) {
|
zblock_feed_info_err zblock_feed_info_insert(PGconn *conn, zblock_feed_info *feed) {
|
||||||
if (!conn || !feed) return ZBLOCK_FEED_INFO_INVALID_ARGS;
|
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 channel_id_be = htobe64(feed->channel_id);
|
||||||
uint64_t guild_id_be = htobe64(feed->guild_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};
|
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.
|
// 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);
|
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);
|
zblock_feed_info_err zblock_feed_info_insert(PGconn *conn, zblock_feed_info *feed);
|
||||||
|
|
||||||
// deletes feed from the database
|
// 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.channel_id = event->channel_id;
|
||||||
feed.guild_id = event->guild_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_t *mrss_feed;
|
||||||
mrss_error_t mrss_error = mrss_parse_url(feed.url, &mrss_feed);
|
mrss_error_t mrss_error = mrss_parse_url(feed.url, &mrss_feed);
|
||||||
if (mrss_error) {
|
if (mrss_error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user