def _scan_folder(self, folder: Path): """ @param folder: a Folder """ logger.debug('Scanning Folder: %s' % folder) session = database.get_session(new_engine=False) try: FilesystemObject.by_uri('%s::%s' % (config.HOSTNAME, folder), session) except NoResultFound: self._add_child(folder) finally: session.close() for child_name in listdir(str(folder)): self._queue.put(folder / child_name)
def _scan_file(self, file: Path): """ @param file: a File """ logger.debug('Scanning File: %s' % file) session = database.get_session(new_engine=False) try: db_item = FilesystemObject.by_uri('%s::%s' % (config.HOSTNAME, file), session) except NoResultFound: self._add_child(file) session.close() return if file.stat().st_size == db_item.size and datetime.fromtimestamp(file.stat().st_mtime) == db_item.mtime: pass else: session.delete(db_item) session.commit() self._queue.put(file) logging.info('Cache mismatch: %r' % db_item) session.close()