|
|
from io import StringIO |
|
|
import streamlit as st |
|
|
|
|
|
|
|
|
class CoreClient: |
|
|
|
|
|
def generate(self, source: str, target: str, code: str): |
|
|
return code |
|
|
|
|
|
|
|
|
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'] |
|
|
|
|
|
|
|
|
st.sidebar.header('A SQL Transformer') |
|
|
|
|
|
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', |
|
|
placeholder='select * from now()' |
|
|
) |
|
|
|
|
|
input_file = st.sidebar.file_uploader( |
|
|
label="Choose a SQL file", |
|
|
accept_multiple_files=False) |
|
|
|
|
|
client = CoreClient() |
|
|
|
|
|
|
|
|
def transform(): |
|
|
code = input_text |
|
|
source = source_database |
|
|
target = target_database |
|
|
if code: |
|
|
ts = client.generate(source, target, code) |
|
|
for solution in ts: |
|
|
st.code(solution, language='sql') |
|
|
else: |
|
|
if input_file is not None: |
|
|
|
|
|
stringio = StringIO(input_file.getvalue().decode("utf-8")) |
|
|
|
|
|
sql = stringio.read() |
|
|
ts = client.generate(source, target, sql) |
|
|
for solution in ts: |
|
|
st.code(solution, language='sql') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
transform() |
|
|
|