Source code for aequilibrae.transit.transit_elements.agency

from contextlib import closing
from sqlite3 import Connection

from aequilibrae.project.database_connection import database_connection
from aequilibrae.transit.constants import Constants
from aequilibrae.transit.transit_elements.basic_element import BasicPTElement


[docs] class Agency(BasicPTElement): """Transit Agency to load into the database * agency_id (:obj:`int`): ID for the transit agency * agency (:obj:`str`): Name of the transit agency * feed_date (:obj:`str`): Date for the transit feed using in the import * service_date (:obj:`str`): Date for the route services being imported * description (:obj:`str`): Description of the feed""" def __init__(self): self.agency = "" self.feed_date = "" self.service_date = "" self.description = 0 self.agency_id = self.__get_agency_id()
[docs] def save_to_database(self, conn: Connection) -> None: """Saves route to the database""" data = [self.agency_id, self.agency, self.feed_date, self.service_date, self.description] sql = """insert into agencies (agency_id, agency, feed_date, service_date, description) values (?, ?, ?, ?, ?);""" conn.execute(sql, data) conn.commit()
def __get_agency_id(self): with closing(database_connection("transit")) as conn: sql = "Select coalesce(max(distinct(agency_id)), 0) from agencies;" max_db = int(conn.execute(sql).fetchone()[0]) c = Constants() c.agencies["agencies"] = max(c.agencies.get("agencies", 0), max_db) + 1 return c.agencies["agencies"]