Sobes.tech
Junior — Middle
116

Kā īstenot funkcionalitāti, kas ļauj lietotājiem abonēt citu lietotāju atjauninājumus?

Atbilde no AI

sobes.tech AI

Для реализации функциональности подписки пользователей друг на друга можно использовать структуру данных, которая хранит связи между пользователями — кто на кого подписан. В Python это часто реализуется через базы данных с таблицей подписок или через словари/множества в памяти.

Пример на Python с использованием словаря, где ключ — пользователь, а значение — множество пользователей, на которых он подписан:

class SubscriptionService:
    def __init__(self):
        self.subscriptions = {}  # {user_id: set of user_ids}

    def subscribe(self, follower_id, followee_id):
        if follower_id == followee_id:
            return  # нельзя подписаться на себя
        self.subscriptions.setdefault(follower_id, set()).add(followee_id)

    def unsubscribe(self, follower_id, followee_id):
        if follower_id in self.subscriptions:
            self.subscriptions[follower_id].discard(followee_id)

    def get_followees(self, user_id):
        return self.subscriptions.get(user_id, set())

# Использование
service = SubscriptionService()
service.subscribe('user1', 'user2')
service.subscribe('user1', 'user3')
print(service.get_followees('user1'))  # {'user2', 'user3'}

В реальном приложении обычно используется база данных с таблицей подписок, где каждая запись содержит follower_id и followee_id. Это позволяет эффективно хранить и запрашивать подписки.