Updated storage for feeds and posts
This commit is contained in:
137
libCore.js
137
libCore.js
@@ -19,31 +19,21 @@ const openai = new OpenAIApi(configuration);
|
||||
|
||||
// Data Structures
|
||||
var feeds = [];
|
||||
let rssFeedMap = [];
|
||||
let rssFeedCategories = [];
|
||||
var rssFeedMap = [];
|
||||
var rssFeedCategories = [];
|
||||
|
||||
// Precess Vars
|
||||
var userTable = process.env.DB_TABLE
|
||||
|
||||
// Setup Storage handler
|
||||
var storageSource = new storageHandler.Storage(userTable);
|
||||
// Setup Storage handlers
|
||||
var feedStorage = new storageHandler.feedStorage();
|
||||
|
||||
/**
|
||||
* Adds a new source url to configured storage
|
||||
* Adds or updates new source url to configured storage
|
||||
* @constructor
|
||||
* @param {string} title - Title/Name of the RSS feed.
|
||||
* @param {string} link - URL of RSS feed.
|
||||
* @param {string} category - Category of RSS feed.
|
||||
*/
|
||||
exports.addSource = function (title, link, category, guildId, channelId, callback) {
|
||||
|
||||
for (i = 0; i < feeds.length; i++) {
|
||||
if (feeds[i].link == link) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
storageSource.create([{
|
||||
exports.addSource = async (title, link, category, guildId, channelId, callback) => {
|
||||
feedStorage.create([{
|
||||
"fields": {
|
||||
"title": title,
|
||||
"link": link,
|
||||
@@ -54,9 +44,11 @@ exports.addSource = function (title, link, category, guildId, channelId, callbac
|
||||
}], function (err, record) {
|
||||
if (err) {
|
||||
log.ERROR("Error in create:", err);
|
||||
callback(err, undefined);
|
||||
return callback(err, undefined);
|
||||
}
|
||||
|
||||
if (!record) return callback(undefined, false);
|
||||
|
||||
log.DEBUG("Record ID:", record.getId());
|
||||
|
||||
var linkData = {
|
||||
@@ -71,7 +63,7 @@ exports.addSource = function (title, link, category, guildId, channelId, callbac
|
||||
feeds.push(linkData);
|
||||
|
||||
log.DEBUG("pushed item to feeds");
|
||||
callback(undefined, true);
|
||||
return callback(undefined, record);
|
||||
});
|
||||
|
||||
}
|
||||
@@ -88,13 +80,13 @@ exports.deleteSource = function (title, callback) {
|
||||
deleteRecord = feeds[i].id;
|
||||
}
|
||||
}
|
||||
storageSource.destroy(deleteRecord, function (err, deletedRecord) {
|
||||
feedStorage.destroy(deleteRecord, function (err, deletedRecord) {
|
||||
if (err) {
|
||||
log.ERROR(err);
|
||||
callback(err, undefined);
|
||||
return callback(err, undefined);
|
||||
}
|
||||
log.DEBUG(deletedRecord.id);
|
||||
callback(undefined, deletedRecord);
|
||||
return callback(undefined, deletedRecord);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -104,17 +96,17 @@ exports.deleteSource = function (title, callback) {
|
||||
* @param {string} feedType - Category to select Feed by.
|
||||
*/
|
||||
exports.getFeeds = function (feedType) {
|
||||
var linkFlayerFilteredMap = [];
|
||||
var rssFeedFilteredMap = [];
|
||||
if (feedType == null || feedType == undefined || feedType == "" || feedType.toLowerCase() == "all") {
|
||||
return rssFeedMap;
|
||||
} else {
|
||||
|
||||
rssFeedMap.forEach(linkFlay => {
|
||||
if (linkFlay.category.toLowerCase().indexOf(feedType.toLowerCase()) > -1) {
|
||||
linkFlayerFilteredMap.push(linkFlay);
|
||||
rssFeedMap.forEach(rssFeed => {
|
||||
if (rssFeed.category.toLowerCase().indexOf(feedType.toLowerCase()) > -1) {
|
||||
rssFeedFilteredMap.push(rssFeed);
|
||||
}
|
||||
});
|
||||
return linkFlayerFilteredMap;
|
||||
return rssFeedFilteredMap;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,47 +118,39 @@ exports.loadFeeds = function () {
|
||||
rssFeedMap = [];
|
||||
rssFeedCategories = [];
|
||||
|
||||
storageSource.getAllRecords(function (err, records) {
|
||||
records.forEach(function (record) {
|
||||
try {
|
||||
log.DEBUG('Retrieved title: ', record.get('title'));
|
||||
log.DEBUG('Retrieved link:', record.get('link'));
|
||||
log.DEBUG('Retrieved category:', record.get('category'));
|
||||
|
||||
var feedData = {
|
||||
title: `${unescape(record.get('title'))}`,
|
||||
link: `${unescape(record.get('link'))}`,
|
||||
category: `${unescape(record.get('category'))}`,
|
||||
id: record.getId()
|
||||
}
|
||||
|
||||
var foundMatch = false;
|
||||
feeds.forEach(feedBlock => {
|
||||
if (feedBlock.link == feedData.link) {
|
||||
foundMatch = true;
|
||||
}
|
||||
});
|
||||
|
||||
if (!foundMatch) {
|
||||
feeds.push(feedData);
|
||||
feedStorage.getAllRecords((err, records) => {
|
||||
for (const record of records){
|
||||
try {
|
||||
log.DEBUG('Retrieved title: ', record.title);
|
||||
log.DEBUG('Retrieved link: ', record.link);
|
||||
log.DEBUG('Retrieved category: ', record.category);
|
||||
log.DEBUG('Retrieved guild ID: ', record.guild_id);
|
||||
log.DEBUG('Retrieved channel ID: ', record.channel_id);
|
||||
|
||||
// Check to see if this source has been loaded already
|
||||
feeds.forEach(feedSource => {
|
||||
if (feedSource.link != record.link) {
|
||||
log.DEBUG("Loading new source: ", feedSource)
|
||||
feeds.push(feedSource);
|
||||
}
|
||||
});
|
||||
|
||||
let foundCat = false;
|
||||
rssFeedCategories.forEach(cat => {
|
||||
if (cat == record.get('category')) {
|
||||
foundCat = true;
|
||||
}
|
||||
});
|
||||
|
||||
if (!foundCat) {
|
||||
rssFeedCategories.push(record.get('category'));
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
log.DEBUG(error);
|
||||
// Update the known categories if new category is not present
|
||||
if (!rssFeedCategories.includes(record.category)) {
|
||||
log.DEBUG("Added new category to running known categories: ", record.category)
|
||||
rssFeedCategories.push(record.category);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
} catch (error) {
|
||||
log.DEBUG(error);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
feeds.forEach(feedBlock => {
|
||||
(async () => {
|
||||
try {
|
||||
@@ -177,10 +161,12 @@ exports.loadFeeds = function () {
|
||||
}
|
||||
|
||||
if (feed != undefined && feed.items != undefined) {
|
||||
//log.DEBUG("Feed: ", feed);
|
||||
feed.items.forEach(item => {
|
||||
var foundFeed = false;
|
||||
rssFeedMap.forEach(linkFlay => {
|
||||
if (linkFlay.link == item.link) {
|
||||
rssFeedMap.forEach(rssFeed => {
|
||||
if (rssFeed.link == item.link) {
|
||||
log.DEBUG("Found matching post?: ", rssFeed)
|
||||
foundFeed = true;
|
||||
}
|
||||
});
|
||||
@@ -202,14 +188,9 @@ exports.loadFeeds = function () {
|
||||
})
|
||||
} catch (error) {
|
||||
log.DEBUG(error);
|
||||
}
|
||||
})().then();
|
||||
});
|
||||
return;
|
||||
//fetchNextPage();
|
||||
}, function done(error) {
|
||||
log.DEBUG(error);
|
||||
});
|
||||
}
|
||||
|
||||
//log.DEBUG("RSS Feed Map: ", rssFeedMap);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -372,4 +353,12 @@ exports.getQuotes = async function (quote_url) {
|
||||
*/
|
||||
exports.getCategories = function () {
|
||||
return rssFeedCategories;
|
||||
}
|
||||
|
||||
exports.addPost = (postObject, callback) => {
|
||||
if(!postObject.post_link_hash) return callback(new Error("No hash included"), undefined);
|
||||
}
|
||||
|
||||
exports.checkIfPostExists = (postObject, callback) => {
|
||||
if(!postObject.post_id || !postObject.post_link_hash) return callback(new Error("No hash included"), undefined);
|
||||
}
|
||||
Reference in New Issue
Block a user