import tinydb import gradio as gr db = tinydb.TinyDB("books.json") table = db.table("books") def Insert(url, users): book = {"url": url, "users": users} table.insert(book) return f"Added {url} by {users} to the database." def Fetch(users): books = table.search(tinydb.where("users") == users) books_str = "\n".join([f"{book['url']} by {book['users']}" for book in books]) return books_str def Update(url, new_users): existing_users = table.search(tinydb.where("url") == url)[0].get("users") table.update({"users": new_users}, tinydb.where("url") == url) return f"Updated users for the book '{url}' from '{existing_users}' to '{new_users}'." def Delete(url): table.remove(tinydb.where("url") == url) return f"Deleted book with URL '{url}' from the database." def process_data(option, url, users): if option == "Insert": return Insert(url, users) elif option == "Fetch": return Fetch(users) elif option == "Update": return Update(url, users) elif option == "Delete": return Delete(url) else: return "Invalid option" demo = gr.Interface( fn=process_data, inputs=[ gr.Radio(["Insert", "Fetch", "Update", "Delete"], label="Select Operation"), gr.Textbox(label="URL"), gr.Textbox(label="Users"), ], outputs=gr.Textbox(label="Result") ) demo.launch()