File size: 2,052 Bytes
815cfd4
bed9222
4a4eae5
09a9a2e
589c127
815cfd4
 
09a9a2e
815cfd4
 
 
 
 
963c94c
 
815cfd4
 
589c127
 
963c94c
4a4eae5
815cfd4
 
09a9a2e
815cfd4
 
 
 
 
09a9a2e
815cfd4
 
 
 
 
09a9a2e
60dbf47
7fd53e3
815cfd4
 
 
09a9a2e
815cfd4
 
 
 
589c127
 
963c94c
589c127
 
 
 
 
 
815cfd4
 
 
 
589c127
 
815cfd4
 
 
 
 
 
589c127
 
815cfd4
 
 
 
 
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
from io import StringIO
import streamlit as st
import os
from loguru import logger
from client import OpenAIService, SQLService, FacebookLLAMAService, GoogleT5Service

st.set_page_config(
    page_title=' A SQL Generative Pre-trained Transformer',
    layout='wide',
    initial_sidebar_state='expanded'
)

databases = ['Oracle', 'SQLServer', 'MySQL', 'DB2', 'PostgreSQL', 'Snowflake', 'Redshift']

models = ['openai-text-david-003', 'google-t5', 'facebook-llama']
# -------------

st.sidebar.header('๐ŸŽƒ A SQL Transformer for Migration')

model = st.sidebar.selectbox(label='Model', options=models, index=0)
openai_key = os.environ.get("OPEN-KEY", None)

source_database = st.sidebar.selectbox(
    label='๐Ÿ“• Source Database',
    options=databases,
    index=0
)

target_database = st.sidebar.selectbox(
    label='๐Ÿ“—Target Database',
    options=databases,
    index=4
)

input_text = st.sidebar.text_area(
    label='๐Ÿ“‹ Insert SQL',
    height=200,
    placeholder='select id from customer where rownum <= 100'
)

input_file = st.sidebar.file_uploader(
    label="	๐Ÿ“„ Choose a SQL file",
    accept_multiple_files=False)


def transform():
    client: SQLService = None
    if model == "openai-text-david-003":
        client = OpenAIService(openai_key)
    elif model == "google-t5":
        client = GoogleT5Service()
    elif model == "facebook-llama":
        client = FacebookLLAMAService()
    logger.info(f"Using Model:{model}")

    code = input_text
    source = source_database
    target = target_database
    if code:
        solutions = client.translate(source, target, code)
        st.code(solutions[0], language='sql')
    else:
        if input_file is not None:
            # To convert to a string based IO:
            stringio = StringIO(input_file.getvalue().decode("utf-8"))
            # To read file as string:
            sql = stringio.read()
            solutions = client.translate(source, target, sql)
            st.code(solutions[0], language='sql')


# ---------------------------------------

transform()