pedroferreira's picture
runs black
df1e6f4
raw
history blame
1.43 kB
import os
import json
import aiofiles
import bittensor as bt
from .streamer import ProcessedStreamResponse
class LogDatabase:
def __init__(self, log_database_path: str):
self.log_database_path = log_database_path
self.ensure_db_exists(log_database_path)
def ensure_db_exists(self, file_path):
if not os.path.exists(file_path):
# Create an empty JSONL file
with open(file_path, "w") as file:
pass
# TODO: change log to debug
bt.logging.info(f"File '{file_path}' created.")
else:
bt.logging.info(f"File '{file_path}' already exists.")
async def add_streams_to_db(self, stream_responses: ProcessedStreamResponse):
bt.logging.info(f"Writing streams to the database...")
try:
stream_responses_dict = [
dict(stream_response) for stream_response in stream_responses
]
await self.append_dicts_to_file(
self.log_database_path, stream_responses_dict
)
except Exception as e:
bt.logging.error(f"Error while adding streams to the database: {e}")
raise e
async def append_dicts_to_file(self, file_path, dictionaries):
async with aiofiles.open(file_path, mode="a") as file:
for dictionary in dictionaries:
await file.write(json.dumps(dictionary) + "\n")