add community subscription; unify subscription interface

This commit is contained in:
knst-kotov
2022-06-12 10:51:22 +03:00
parent f89cb47daf
commit 39070dc359
6 changed files with 76 additions and 33 deletions

View File

@@ -1,10 +1,12 @@
from orm import Community
from orm import Community, CommunitySubscription
from orm.base import local_session
from resolvers.base import mutation, query, subscription
from auth.authenticate import login_required
import asyncio
from datetime import datetime
from sqlalchemy import and_
@mutation.field("createCommunity")
@login_required
async def create_community(_, info, title, desc):
@@ -68,3 +70,19 @@ async def get_communities(_, info):
with local_session() as session:
communities = session.query(Community)
return communities
def community_subscribe(user, slug):
CommunitySubscription.create(
subscriber = user.slug,
community = slug
)
def community_unsubscribe(user, slug):
with local_session() as session:
sub = session.query(CommunitySubscription).\
filter(and_(CommunitySubscription.subscriber == user.slug, CommunitySubscription.community == slug)).\
first()
if not sub:
raise Exception("subscription not exist")
session.delete(sub)
session.commit()