from faker import Faker from cpl.database.abc import DataSeederABC from cpl.query import Enumerable from model.author import Author from model.author_dao import AuthorDao from model.post import Post from model.post_dao import PostDao fake = Faker() class TestDataSeeder(DataSeederABC): def __init__(self, authors: AuthorDao, posts: PostDao): DataSeederABC.__init__(self) self._authors = authors self._posts = posts async def seed(self): if await self._authors.count() == 0: await self._seed_authors() if await self._posts.count() == 0: await self._seed_posts() async def _seed_authors(self): authors = Enumerable.range(0, 35).select( lambda x: Author( 0, fake.first_name(), fake.last_name(), ) ).to_list() await self._authors.create_many(authors, skip_editor=True) async def _seed_posts(self): posts = Enumerable.range(0, 100).select( lambda x: Post( id=0, author_id=fake.random_int(min=1, max=35), title=fake.sentence(nb_words=6), content=fake.paragraph(nb_sentences=6), ) ).to_list() await self._posts.create_many(posts, skip_editor=True)