fix(backend): make fake entries more plausible
This commit is contained in:
parent
b6bb849e2c
commit
88e287d0ff
1 changed files with 60 additions and 5 deletions
|
@ -6,9 +6,10 @@ from faker import Faker
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
from todo.schemas.users import UserCreate, User
|
from todo.schemas.users import UserCreate, User
|
||||||
from todo.crud.users import create_user
|
from todo.crud.users import hash_password
|
||||||
|
from todo.models.users import User as UserModel
|
||||||
from todo.schemas.todos import TodoItemCreate, TodoItem
|
from todo.schemas.todos import TodoItemCreate, TodoItem
|
||||||
from todo.crud.todos import create_todo
|
from todo.models.todos import TodoItem as TodoItemModel
|
||||||
from todo.database.engine import get_db
|
from todo.database.engine import get_db
|
||||||
|
|
||||||
|
|
||||||
|
@ -48,6 +49,7 @@ def get_fake_todo_details() -> TodoItemCreate:
|
||||||
description_sentences = [fk.sentence(nb_words=randint(4, 6)) for i in range(randint(1, 5))]
|
description_sentences = [fk.sentence(nb_words=randint(4, 6)) for i in range(randint(1, 5))]
|
||||||
if randint(0, 1):
|
if randint(0, 1):
|
||||||
delimiter = '\n- '
|
delimiter = '\n- '
|
||||||
|
description_sentences[0] = "- " + description_sentences[0]
|
||||||
elif randint(0, 1):
|
elif randint(0, 1):
|
||||||
delimiter = '\n'
|
delimiter = '\n'
|
||||||
else:
|
else:
|
||||||
|
@ -63,16 +65,69 @@ def get_fake_todo_details() -> TodoItemCreate:
|
||||||
def create_fake_user(db: Session = next(get_db())) -> User:
|
def create_fake_user(db: Session = next(get_db())) -> User:
|
||||||
"""Creates a fake user and saves them to the database."""
|
"""Creates a fake user and saves them to the database."""
|
||||||
|
|
||||||
return create_user(db=db, user=get_fake_user_details())
|
user = get_fake_user_details()
|
||||||
|
|
||||||
|
fk = _get_faker()
|
||||||
|
created = fk.date_time_between('-2y', 'now')
|
||||||
|
updated = fk.date_time_between(created, 'now')
|
||||||
|
|
||||||
|
db_user = UserModel(
|
||||||
|
email=user.email,
|
||||||
|
first_name=user.first_name,
|
||||||
|
last_name=user.last_name,
|
||||||
|
password=hash_password(user.password),
|
||||||
|
created=created,
|
||||||
|
updated=updated,
|
||||||
|
)
|
||||||
|
|
||||||
|
db.add(db_user)
|
||||||
|
db.commit()
|
||||||
|
db.refresh(db_user)
|
||||||
|
return User.from_orm(db_user)
|
||||||
|
|
||||||
|
|
||||||
def create_fake_todo(user_id: int, db: Session = next(get_db())) -> TodoItem:
|
def create_fake_todo(user_id: int, db: Session = next(get_db())) -> TodoItem:
|
||||||
"""Creates a fake todo-item for the specified user and saves it to the database."""
|
"""Creates a fake todo-item for the specified user and saves it to the database."""
|
||||||
|
|
||||||
return create_todo(db=db, todo=get_fake_todo_details(), user_id=user_id)
|
todo = get_fake_todo_details()
|
||||||
|
|
||||||
|
db_user = db.query(UserModel).filter(UserModel.id == user_id).first()
|
||||||
|
if not db_user:
|
||||||
|
raise RuntimeError('User not found.')
|
||||||
|
|
||||||
|
fk = _get_faker()
|
||||||
|
created = fk.date_time_between(db_user.created, 'now')
|
||||||
|
if randint(1, 4) == 1:
|
||||||
|
updated = fk.date_time_between(created, 'now')
|
||||||
|
else:
|
||||||
|
updated = created
|
||||||
|
|
||||||
|
if randint(1, 4) == 1:
|
||||||
|
finished = fk.date_time_between(created, 'now')
|
||||||
|
updated = finished
|
||||||
|
done = True
|
||||||
|
else:
|
||||||
|
finished = None
|
||||||
|
done = False
|
||||||
|
|
||||||
|
|
||||||
def populate_database(num_users: int = 100, max_todos_per_user: int = 100) -> None:
|
db_todo = TodoItemModel(
|
||||||
|
user_id=user_id,
|
||||||
|
title=todo.title,
|
||||||
|
description=todo.description,
|
||||||
|
done=done,
|
||||||
|
created=created,
|
||||||
|
updated=updated,
|
||||||
|
finished=finished
|
||||||
|
)
|
||||||
|
|
||||||
|
db.add(db_todo)
|
||||||
|
db.commit()
|
||||||
|
db.refresh(db_todo)
|
||||||
|
return TodoItem.from_orm(db_todo)
|
||||||
|
|
||||||
|
|
||||||
|
def populate_database(num_users: int = randint(50, 150), max_todos_per_user: int = randint(50, 150)) -> None:
|
||||||
"""Creates the specified number of users, each with between 0 and max_todos_per_user todo-items."""
|
"""Creates the specified number of users, each with between 0 and max_todos_per_user todo-items."""
|
||||||
|
|
||||||
db = next(get_db())
|
db = next(get_db())
|
||||||
|
|
Loading…
Add table
Reference in a new issue