File size: 3,664 Bytes
0f4fe40
899f8ae
0f4fe40
 
 
 
 
 
 
 
20e4932
0f4fe40
899f8ae
0f38549
 
 
 
 
 
899f8ae
 
 
 
 
 
 
 
 
 
 
0f4fe40
899f8ae
0f4fe40
 
 
 
 
 
 
0df8b02
 
0f4fe40
 
 
 
9ae9c63
0f4fe40
 
 
 
 
 
 
 
899f8ae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0f4fe40
899f8ae
 
0f38549
899f8ae
 
 
0f38549
899f8ae
 
 
 
0f38549
899f8ae
 
0f38549
899f8ae
 
 
0f4fe40
 
 
 
0f38549
0f4fe40
 
 
 
 
 
 
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import streamlit as st
from azure.cosmos import CosmosClient
import os

# Cosmos DB configuration
ENDPOINT = "https://acae-afd.documents.azure.com:443/"
SUBSCRIPTION_ID = "003fba60-5b3f-48f4-ab36-3ed11bc40816"
# You'll need to set these environment variables or use Azure Key Vault
DATABASE_NAME = os.environ.get("COSMOS_DATABASE_NAME")
CONTAINER_NAME = os.environ.get("COSMOS_CONTAINER_NAME")
Key = os.environ.get("Key")

def insert_record(record):
    try:
        response = container.create_item(body=record)
        return True, response
    except Exception as e:
        return False, str(e)

def call_stored_procedure(container, long_text):
    try:
        result = container.scripts.execute_stored_procedure(
            sproc='processQTPrompts',  # Replace with your actual stored procedure name
            params=[long_text],
            partition_key=None  # You may need to adjust this based on your container's partition key
        )
        return True, result
    except Exception as e:
        return False, str(e)

# Streamlit app
st.title("🌟 Cosmos DB Record Insertion and Stored Procedure")

# Login section
if 'logged_in' not in st.session_state:
    st.session_state.logged_in = False

if not st.session_state.logged_in:
    st.subheader("πŸ” Login")
    #input_key = st.text_input("Enter your Cosmos DB Primary Key", type="password")
    input_key = Key
    if st.button("πŸš€ Login"):
        if input_key:
            st.session_state.primary_key = input_key
            st.session_state.logged_in = True
            st.rerun()
        else:
            st.error("Please enter a valid key")
else:
    # Initialize Cosmos DB client
    client = CosmosClient(ENDPOINT, credential=st.session_state.primary_key)
    database = client.get_database_client(DATABASE_NAME)
    container = database.get_container_client(CONTAINER_NAME)

    # Input fields for record insertion
    st.subheader("πŸ“ Enter Record Details")
    id = st.text_input("ID")
    name = st.text_input("Name")
    age = st.number_input("Age", min_value=0, max_value=150)
    city = st.text_input("City")

    # Submit button for record insertion
    if st.button("πŸ’Ύ Insert Record"):
        record = {
            "id": id,
            "name": name,
            "age": age,
            "city": city
        }
        
        success, response = insert_record(record)
        if success:
            st.success("βœ… Record inserted successfully!")
            st.json(response)
        else:
            st.error(f"❌ Failed to insert record: {response}")

    # Separator
    st.markdown("---")

    # Input field for long text
    st.subheader("πŸ“ Enter Long Text for Stored Procedure")
    long_text = st.text_area("Long Text", height=200)

    # Button to call stored procedure
    if st.button("πŸš€ Call Stored Procedure"):
        if long_text:
            success, result = call_stored_procedure(container, long_text)
            if success:
                st.success("βœ… Stored procedure executed successfully!")
                st.json(result)
            else:
                st.error(f"❌ Failed to execute stored procedure: {result}")
        else:
            st.warning("Please enter some text before calling the stored procedure.")

    # Logout button
    if st.button("πŸšͺ Logout"):
        st.session_state.logged_in = False
        st.rerun()

    # Display connection info
    st.sidebar.subheader("πŸ”— Connection Information")
    st.sidebar.text(f"Endpoint: {ENDPOINT}")
    st.sidebar.text(f"Subscription ID: {SUBSCRIPTION_ID}")
    st.sidebar.text(f"Database: {DATABASE_NAME}")
    st.sidebar.text(f"Container: {CONTAINER_NAME}")