def connect_with_connector()

in Backend/src/app/database.py [0:0]


def connect_with_connector() -> Engine:
    instance_connection_name = settings.INSTANCE_CONNECTION_NAME
    db_user = settings.IAM_USER
    db_name = settings.POSTGRES_DB

    ip_type = IPTypes.PRIVATE

    # initialize Cloud SQL Python Connector object
    connector = Connector(ip_type)

    def getconn() -> pg8000.dbapi.Connection:
        conn: pg8000.dbapi.Connection = connector.connect(
            instance_connection_name,
            "pg8000",
            user=db_user,
            db=db_name,
            enable_iam_auth=True,
            ip_type=ip_type,
        )
        return conn

    pool = create_engine(
        "postgresql+pg8000://",
        creator=getconn,
        pool_size=5,
        max_overflow=2,
        pool_timeout=30,
        pool_recycle=1800,  # 30 minutes
    )
    return pool