def insert(self, title, category, description, date, site_url, url, image_url): try: conn = self.data_store.get_connection() entry_existing = r.table(self.db_article_table) \ .get_all(title, index="title") \ .count() \ .run(conn) > 0 if entry_existing: return r.table(self.db_article_table).insert({ 'title': title, 'category': category, 'description': description, 'date': date, 'site_url': site_url, 'url': url, 'image_url': image_url, 'synchronised_to_discord': False }).run(conn) finally: DataStore.disconnect(conn)
def get_unsynchronised(self): try: conn = self.data_store.get_connection() return r.table(self.db_article_table) \ .filter({'synchronised_to_discord': False}) \ .run(conn) finally: DataStore.disconnect(conn)
def set_synchronised(self, unsynchronised_items): try: conn = self.data_store.get_connection() for item in unsynchronised_items: r.table(self.db_article_table) \ .get(item['id']) \ .update({"synchronised_to_discord": True}) \ .run(conn) finally: DataStore.disconnect(conn)
def bootstrap_db(from_scratch): config = Configuration() conn = DataStore().get_connection() if from_scratch and config.get_db_name() in list(r.db_list().run(conn)): print('Forcing - dropping existing db') r.db_drop(config.get_db_name()).run(conn) if config.get_db_name() not in list(r.db_list().run(conn)): r.db_create(config.get_db_name()).run(conn) else: print(f"{config.get_db_name()} db already exists") if config.get_article_table() not in list(r.db(config.get_db_name()).table_list().run(conn)): r.db(config.get_db_name()).table_create(config.get_article_table()).run(conn) r.db(config.get_db_name()).table(config.get_article_table()).index_create('title').run(conn) else: print(f"{config.get_article_table()} table already exists") DataStore.disconnect(conn)
def clear(self): try: conn = self.data_store.get_connection() r.table(self.db_article_table).delete().run(conn) finally: DataStore.disconnect(conn)