File size: 2,352 Bytes
6158912
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import streamlit as st
import json
from azure.cosmos import CosmosClient

# Initialize variables
connection_str = ""
database_name = ""
container_name = ""

# Load and save query files
def load_query(filename):
    with open(filename, 'r') as file:
        return file.read()

def save_query(filename, query):
    with open(filename, 'w') as file:
        file.write(query)

# Connect to Azure Cosmos DB
def connect_to_cosmosdb(url, key, database, container):
    client = CosmosClient(url, credential=key)
    db = client.get_database_client(database)
    container = db.get_container_client(container)
    return container

# Streamlit UI
st.title("Azure Cosmos DB Explorer πŸ‘½")

# Connection Details Expander
with st.expander("Connect 🌍"):
    connection_str = st.text_input("Connection String (URL):", connection_str)
    database_name = st.text_input("Database Name:", database_name)
    container_name = st.text_input("Container Name:", container_name)
    if st.button("Connect"):
        try:
            container = connect_to_cosmosdb(connection_str, database_name, container_name)
            st.success("Connected successfully! πŸŽ‰")
        except Exception as e:
            st.error(f"Failed to connect: {e}")

# Query Editor Expander
with st.expander("Query Editor πŸ“"):
    query = st.text_area("Enter your SQL query here:")
    file_option = st.selectbox("File Options", ["New", "Open", "Save", "Save As"])
    
    if file_option == "New":
        query = ""
    elif file_option == "Open":
        open_file = st.file_uploader("Choose a file:", type=["txt"])
        if open_file is not None:
            query = load_query(open_file)
    elif file_option == "Save":
        save_filename = st.text_input("Enter filename to save:", "my_query.txt")
        if st.button("Save Query"):
            save_query(save_filename, query)
    elif file_option == "Save As":
        saveas_filename = st.text_input("Enter new filename:", "my_new_query.txt")
        if st.button("Save As"):
            save_query(saveas_filename, query)
    
    if st.button("Execute Query πŸš€"):
        try:
            results = list(container.query_items(query=query, enable_cross_partition_query=True))
            st.write("Results πŸ“‹:")
            st.json(results)
        except Exception as e:
            st.error(f"Query failed: {e}")