from sqlalchemy.orm import Session from .models import Poems import random # Загружаем стихи def add_poems_to_db(db: Session): f1 = open('text121.txt', encoding='utf-8', mode='r')#открыть фаил для чтения на русском for a in range(1, 102): f1.seek(0)#перейти к началу i=0 str1 = "" stixi = "" author = "" flag = False while str1 != f"стих {a}\n": str1=f1.readline() name=f1.readline() # Цикл для склеивания стихотворения while str1 != f"стих {a+1}\n": str1=f1.readline() if str1 != f"стих {a + 1}\n": if (str1 != f"Автор:\n" and flag == False): stixi += str1 # удаление /n и заключение в список else: if str1 == f"Автор:\n":#чтобы не записывать слово "автор" flag = True else: author += str1 if(str1 != f"стих {a+1}\n"): stixi+=str1#удаление /n и заключение в список poem = Poems(title=name, text=stixi, author=author) # В конце каждой итерации добавляем в базу данных db.add(poem) db.commit() db.refresh(poem) # close the file f1.close() def generate_poem(db: Session): # генерируем 1 случайное id и выбираем объект бд с этим id rand_id = random.randint(1, 102) poem = db.query(Poems).filter(Poems.id == rand_id).first() # возвращаем название и текст стихотворения return {"name": poem.poem_name, "text": poem.poem_text, "author":""} # добавить поле author в Poems # Функция, создающая сессию БД при каждом запросе к нашему API. # Срабатывает до запуска остальных функций. # Всегда закрывает сессию при окончании работы с ней # @app.middleware("http") # async def db_session_middleware(request: Request, call_next): # response = Response("Internal server error", status_code=500) # try: # request.state.db = SessionLocal() # response = await call_next(request) # finally: # request.state.db.close() # return response