kenken999's picture
fda
0f43f8a
import gradio as gr
import psycopg2
from dataclasses import dataclass, field
from typing import List, Optional
from mysite.interpreter.process import no_process_file,process_file
import os
####
@dataclass
class Ride:
ride_id: Optional[int] = field(default=None)
rideable_type: str = ''
start_station_id: int = 0
start_station_name: str = ''
end_station_id: int = 0
end_station_name: str = ''
started_at: str = ''
ended_at: str = ''
member_casual: str = ''
def connect_to_db():
conn = psycopg2.connect(
dbname="neondb",
user=os.getenv("postgre_user"),
password=os.getenv("postgre_pass"),
host=os.getenv("postgre_host"),
port=5432,
sslmode="require"
)
return conn
def create_ride(ride: Ride):
conn = connect_to_db()
cur = conn.cursor()
cur.execute("INSERT INTO rides (rideable_type, start_station_id, start_station_name, end_station_id, end_station_name, started_at, ended_at, member_casual) VALUES (%s, %s, %s, %s, %s, %s, %s, %s) RETURNING ride_id",
(ride.rideable_type, ride.start_station_id, ride.start_station_name, ride.end_station_id, ride.end_station_name, ride.started_at, ride.ended_at, ride.member_casual))
ride_id = cur.fetchone()[0]
conn.commit()
cur.close()
conn.close()
return ride_id
def read_rides():
conn = connect_to_db()
cur = conn.cursor()
cur.execute("SELECT * FROM rides ORDER BY ride_id desc")
rides = cur.fetchall()
conn.close()
return rides
def read_ride(ride_id: int):
conn = connect_to_db()
cur = conn.cursor()
cur.execute("SELECT * FROM rides WHERE ride_id = %s", (ride_id,))
ride = cur.fetchone()
conn.close()
return ride
def update_ride(ride: Ride):
conn = connect_to_db()
cur = conn.cursor()
no_process_file(ride.start_station_name,ride.end_station_name)
cur.execute("UPDATE rides SET rideable_type = %s, start_station_id = %s, start_station_name = %s, end_station_id = %s, end_station_name = %s, started_at = %s, ended_at = %s, member_casual = %s WHERE ride_id = %s",
(ride.rideable_type, ride.start_station_id, ride.start_station_name, ride.end_station_id, ride.end_station_name, ride.started_at, ride.ended_at, ride.member_casual, ride.ride_id))
conn.commit()
cur.close()
conn.close()
def delete_ride(ride_id: int):
conn = connect_to_db()
cur = conn.cursor()
cur.execute("DELETE FROM rides WHERE ride_id = %s", (ride_id,))
conn.commit()
cur.close()
conn.close()
def test_set_lide(input="test",foldername="test"):
ride = Ride(
rideable_type="rideable_type",
start_station_name=input,
end_station_name=foldername,
)
create_ride(ride)
return [[r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8]] for r in read_rides()]
#def crud_interface():
with gr.Blocks() as gradio_interface:
with gr.Row():
rideable_type = gr.Textbox(label="Rideable Type")
start_station_id = gr.Number(label="Start Station ID")
start_station_name = gr.Textbox(label="Start Station Name")
end_station_id = gr.Number(label="End Station ID")
end_station_name = gr.Textbox(label="End Station Name")
started_at = gr.Textbox(label="Started At")
ended_at = gr.Textbox(label="Ended At")
member_casual = gr.Textbox(label="Member Casual")
ride_id = gr.Number(label="Ride ID (for update/delete)", value=-1, interactive=False)
create_button = gr.Button("Create Ride")
update_button = gr.Button("Update Ride")
delete_button = gr.Button("Delete Ride")
read_button = gr.Button("Read Rides")
output = gr.Dataframe(headers=["Ride ID", "Rideable Type", "Start Station ID", "Start Station Name", "End Station ID", "End Station Name", "Started At", "Ended At", "Member Casual"])
def create_ride_click(rideable_type, start_station_id, start_station_name, end_station_id, end_station_name, started_at, ended_at, member_casual):
ride = Ride(
rideable_type=rideable_type,
start_station_id=start_station_id,
start_station_name=start_station_name,
end_station_id=end_station_id,
end_station_name=end_station_name,
started_at=started_at,
ended_at=ended_at,
member_casual=member_casual
)
create_ride(ride)
return [[r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8]] for r in read_rides()]
def update_ride_click(ride_id, rideable_type, start_station_id, start_station_name, end_station_id, end_station_name, started_at, ended_at, member_casual):
ride = Ride(
ride_id=int(ride_id),
rideable_type=rideable_type,
start_station_id=start_station_id,
start_station_name=start_station_name,
end_station_id=end_station_id,
end_station_name=end_station_name,
started_at=started_at,
ended_at=ended_at,
member_casual=member_casual
)
update_ride(ride)
return [[r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8]] for r in read_rides()]
def delete_ride_click(ride_id):
delete_ride(int(ride_id))
return [[r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8]] for r in read_rides()]
def read_rides_click():
return [[r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8]] for r in read_rides()]
def load_ride_details(evt: gr.SelectData):
row_index = evt.index[0] if isinstance(evt.index, list) else evt.index
rides = read_rides()
selected_row = rides[row_index]
ride_id = selected_row[0]
ride = read_ride(ride_id)
if ride:
return ride[1], ride[2], ride[3], ride[4], ride[5], ride[6], ride[7], ride[8], ride[0]
return "", 0, "", 0, "", "", "", "", -1
create_button.click(fn=create_ride_click,
inputs=[rideable_type, start_station_id, start_station_name, end_station_id, end_station_name, started_at, ended_at, member_casual],
outputs=output)
update_button.click(fn=update_ride_click,
inputs=[ride_id, rideable_type, start_station_id, start_station_name, end_station_id, end_station_name, started_at, ended_at, member_casual],
outputs=output)
delete_button.click(fn=delete_ride_click, inputs=ride_id, outputs=output)
read_button.click(fn=read_rides_click, outputs=output)
output.select(fn=load_ride_details, inputs=None, outputs=[rideable_type, start_station_id, start_station_name, end_station_id, end_station_name, started_at, ended_at, member_casual, ride_id])
#return interface
#d1 = crud_interface()
#d1.launch()