GitHub Action
🚀 Auto-deploy from GitHub Actions
70766d2
raw
history blame
6.96 kB
import gradio as gr
import psycopg2
import os
from dataclasses import dataclass, field
from typing import List, Optional
from mysite.interpreter.process import no_process_file,process_file
@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])
# 自動検出システム用のメタデータ
interface_title = "🚗 データベース管理"
interface_description = "PostgreSQL CRUD操作インターフェース"
#return interface
#d1 = crud_interface()
#d1.launch()