from commu.infrastructure.memory_user_repository import InMemoryUserRepository from commu.infrastructure.memory_post_repository import InMemoryPostRepository from commu.usecases.user_service import UserService from commu.usecases.post_service import PostService from commu.entities.user import UserRole def main(): user_repo = InMemoryUserRepository() post_repo = InMemoryPostRepository() user_service = UserService(user_repo) post_service = PostService(post_repo, user_repo) # Create users admin = user_service.register("alice", UserRole.ADMIN) user = user_service.register("bob", UserRole.USER) guest = user_service.register("guest", UserRole.GUEST) # User creates post post = post_service.create_post(user.id, "Hello world!", images=["img1.png"], videos=["vid1.mp4"]) print(f"Created Post: {post.text}, by {user.username}") # Post search found = post_service.search_posts("hello") print(f"Found {len(found)} posts containing 'hello'.") # Post rating post_service.rate_post(post.id, admin.id, 5) post_service.rate_post(post.id, user.id, 4) print(f"Average Rating: {post.average_rating()}") # Guest tries to create post (should fail) try: post_service.create_post(guest.id, "I am a guest") except PermissionError as e: print("Guest cannot create post:", e) if __name__ == "__main__": main()