from __future__ import annotations from pathlib import Path from dotenv import load_dotenv from pymongo.errors import DuplicateKeyError from shared.datastore import Datastore from shared.docstore import connect_mongodb from shared.docstore.src.classes import VisualCommunication from shared.utils import check_env, setup_logging from web_ui.src.main import NECESSARY_ENV_VAR_LIST if __name__ == '__main__': # load in env file env_path = Path(__file__).parent.parent / 'server.env' assert env_path.exists() load_dotenv(env_path) # ensure env vars set check_env(NECESSARY_ENV_VAR_LIST) # setup logging setup_logging() # connect to minIO datastore = Datastore() datastore.connect() assert datastore._client is not None # connect to MongoDB collection, db, client = connect_mongodb() # get list of image paths test_dir = Path(__file__).parent img_dir = test_dir / 'imgs' img_path_list = [path for path in img_dir.glob('*.jpeg') if path.is_file()] print(img_path_list) # instantiate data object vis_com_list = [ VisualCommunication.from_file(path, minio_client=datastore._client) for path in img_path_list ] for vis_com in vis_com_list: print(repr(vis_com)) # upload images for vis_com in vis_com_list: try: result = collection.insert_one(vis_com.model_dump()) except DuplicateKeyError as exc: print('ignoring:\n', exc) else: print(f"inserted document: {result}")