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 @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") 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()