mirror of
https://github.com/ada-dmitry/sun_project.git
synced 2026-09-24 00:30:17 +00:00
91 lines
4.3 KiB
Python
91 lines
4.3 KiB
Python
from tables.station_table import *
|
|
from dbtable import *
|
|
import add_func
|
|
|
|
class RoutesTable(DbTable):
|
|
def table_name(self):
|
|
return self.dbconn.prefix + "routes"
|
|
|
|
def columns(self):
|
|
return {"id": ["serial", "PRIMARY KEY"],
|
|
"first_st_id": ["integer", "NOT NULL", "REFERENCES stations(id) ON DELETE CASCADE"],
|
|
"last_st_id": ["integer", "NOT NULL", "REFERENCES stations(id) ON DELETE CASCADE"]}
|
|
|
|
def primary_key(self):
|
|
return ['id']
|
|
|
|
'''def table_constraints(self):
|
|
return ["PRIMARY KEY(route_id)"]'''
|
|
|
|
|
|
def all_by_station_id(self, pid, t):
|
|
if(t == 1):
|
|
sql = f"""SELECT * FROM {self.table_name()} WHERE first_st_id = {str(pid)} ORDER BY {", ".join(self.primary_key())};"""
|
|
else:
|
|
sql = f"""SELECT * FROM {self.table_name()} WHERE last_st_id = {str(pid)} ORDER BY {", ".join(self.primary_key())};"""
|
|
cur = self.dbconn.conn.cursor()
|
|
cur.execute(sql)
|
|
return cur.fetchall()
|
|
|
|
def delete(self, id):
|
|
par_sql = f"DELETE FROM routes WHERE id = {str(id)}"
|
|
cur = self.dbconn.conn.cursor()
|
|
cur.execute(par_sql)
|
|
self.dbconn.conn.commit()
|
|
|
|
def insert_route_one(self, max_index):
|
|
while True:
|
|
first_st_id = add_func.validate_input('Введите номер добавляемой начальной станции (0 - для отмены): ', 0, max_index)
|
|
if(first_st_id == -1): return "1"
|
|
last_st_id = add_func.validate_input('Введите номер добавляемой конечной станции (0 - для отмены): ', 0, max_index)
|
|
if(last_st_id == -1): return "1"
|
|
t1 = StationTable().index_by_id(first_st_id)
|
|
t2 = StationTable().index_by_id(last_st_id)
|
|
if t1>t2:
|
|
print('Нельзя добавить такой маршрут')
|
|
else:
|
|
insert = [first_st_id, last_st_id]
|
|
self.insert_one(insert)
|
|
return
|
|
|
|
def update(self, max_index):
|
|
while True:
|
|
t = add_func.validate_input('Изменить маршрут по:\
|
|
\n1 - начальной станции;\
|
|
\n2- конечной станции;\n(0 - отмена);\n', 0, 2)
|
|
if(t==1):
|
|
n1 = add_func.validate_input('Введите номер начальной станции, который вы хотите заменить (0 - для отмены): ', 0, max_index)
|
|
if(n1 == -1): return "1"
|
|
n2 = add_func.validate_input('Введите номер, на который вы хотите поменять (0 - для отмены): ', 0, max_index)
|
|
if(n2 == -1): return "1"
|
|
if n1 != n2:
|
|
sql = f"""UPDATE {self.table_name()} SET first_st_id = '{n2}' WHERE first_st_id = '{n1}';"""
|
|
break
|
|
else:
|
|
print('Невозможно поменять на такой номер')
|
|
elif(t==2):
|
|
n1 = add_func.validate_input('Введите номер конечной станции, который вы хотите заменить (0 - для отмены): ', 0, max_index)
|
|
if(n1 == -1): return "1"
|
|
n2 = add_func.validate_input('Введите номер, на который вы хотите поменять (0 - для отмены): ', 0, max_index)
|
|
if(n2 == -1): return "1"
|
|
if n1 != n2:
|
|
sql = f"""UPDATE {self.table_name()} SET last_st_id = '{n2}' WHERE last_st_id = '{n1}';"""
|
|
# sql2 = f"""UPDATE stations SET id = '{n2}' WHERE id = '{n1}';"""
|
|
break
|
|
else:
|
|
print('Невозможно поменять на такой номер')
|
|
else:
|
|
return "1"
|
|
cur = self.dbconn.conn.cursor()
|
|
cur.execute(sql)
|
|
self.dbconn.conn.commit()
|
|
return
|
|
|
|
def example_insert(self):
|
|
self.insert_one([1,2])
|
|
self.insert_one([1,6])
|
|
self.insert_one([1,7])
|
|
self.insert_one([1,8])
|
|
self.insert_one([1,9])
|
|
self.insert_one([1,6])
|
|
return |