Пример #1
0
    def handle(self, path: str) -> Database:
        """
        Method receives path as a string and tries to reach this path.
        If path is incorrect, it returns Database entity with error message.
        In case of succeed, function goes through each file and tries to pass it through a factory, that returns
        reader or fails if no suitable reader found for this specific file.
        :param path: str
        :return: Database
        """

        if not os.path.isdir(path):
            database = Database('', Query())
            database.set_error('Path incorrect')
            return database

        database_name = os.path.basename(os.path.normpath(path))
        database = Database(database_name, Query())

        files = os.listdir(path)
        for file in files:
            table_parts = file.split('.')

            try:
                table = self.__reader_factory.create(table_parts).read(
                    path + '/' + file, table_parts[0])
                database.add_table(table)
            except:
                pass

        return database
Пример #2
0
 def test_database_setters(self):
     query = Query()
     query.set_table('tada')
     table = Table('table_name', [])
     error_text = 'some error'
     database = Database('database_name', query)
     database.add_table(table)
     database.set_error(error_text)
     self.assertEqual(database.get_name(), 'database_name')
     self.assertEqual(database.get_tables(), {'table_name': table})
     self.assertEqual(database.get_error(), error_text)
     self.assertEqual(database.has_error(), True)
     self.assertEqual(database.get_query(), query)