Nav apraksta

main.py 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from commu.infrastructure.memory_user_repository import InMemoryUserRepository
  2. from commu.infrastructure.memory_post_repository import InMemoryPostRepository
  3. from commu.usecases.user_service import UserService
  4. from commu.usecases.post_service import PostService
  5. from commu.entities.user import UserRole
  6. def main():
  7. user_repo = InMemoryUserRepository()
  8. post_repo = InMemoryPostRepository()
  9. user_service = UserService(user_repo)
  10. post_service = PostService(post_repo, user_repo)
  11. # Create users
  12. admin = user_service.register("alice", UserRole.ADMIN)
  13. user = user_service.register("bob", UserRole.USER)
  14. guest = user_service.register("guest", UserRole.GUEST)
  15. # User creates post
  16. post = post_service.create_post(user.id, "Hello world!", images=["img1.png"], videos=["vid1.mp4"])
  17. print(f"Created Post: {post.text}, by {user.username}")
  18. # Post search
  19. found = post_service.search_posts("hello")
  20. print(f"Found {len(found)} posts containing 'hello'.")
  21. # Post rating
  22. post_service.rate_post(post.id, admin.id, 5)
  23. post_service.rate_post(post.id, user.id, 4)
  24. print(f"Average Rating: {post.average_rating()}")
  25. # Guest tries to create post (should fail)
  26. try:
  27. post_service.create_post(guest.id, "I am a guest")
  28. except PermissionError as e:
  29. print("Guest cannot create post:", e)
  30. if __name__ == "__main__":
  31. main()