diff --git a/main.py b/main.py index 965b9e94..b504cc04 100644 --- a/main.py +++ b/main.py @@ -17,7 +17,7 @@ from resolvers.auth import confirm_email_handler from services.main import storages_init from services.stat.reacted import ReactedStorage from services.stat.topicstat import TopicStat -from services.stat.views import ViewStat +from services.stat.viewed import ViewedStorage from services.zine.gittask import GitTask from services.zine.shoutauthor import ShoutAuthorStorage import_module("resolvers") @@ -32,7 +32,7 @@ middleware = [ async def start_up(): await redis.connect() await storages_init() - views_stat_task = asyncio.create_task(ViewStat.worker()) + views_stat_task = asyncio.create_task(ViewedStorage().worker()) print(views_stat_task) reacted_storage_task = asyncio.create_task(ReactedStorage.worker()) print(reacted_storage_task) diff --git a/migration/tables/content_items.py b/migration/tables/content_items.py index 89392051..f6f7db7d 100644 --- a/migration/tables/content_items.py +++ b/migration/tables/content_items.py @@ -12,7 +12,7 @@ from orm.shout import Shout, ShoutTopic, ShoutReactionsFollower from orm.user import User from orm.topic import TopicFollower from services.stat.reacted import ReactedStorage -from services.stat.views import ViewStat +from services.stat.viewed import ViewedStorage OLD_DATE = "2016-03-05 22:22:00.350000" ts = datetime.now() @@ -346,7 +346,7 @@ async def migrate(entry, storage): raise Exception("[migration] content_item.ratings error: \n%r" % content_rating) # shout views - await ViewStat.increment(shout_dict["slug"], amount=entry.get("views", 1)) + await ViewedStorage.increment(shout_dict["slug"], amount=entry.get("views", 1)) # del shout_dict['ratings'] shout_dict["oid"] = entry.get("_id") storage["shouts"]["by_oid"][entry["_id"]] = shout_dict diff --git a/resolvers/profile.py b/resolvers/profile.py index cacf64a5..15efc50d 100644 --- a/resolvers/profile.py +++ b/resolvers/profile.py @@ -9,11 +9,10 @@ from base.resolvers import mutation, query from orm.reaction import Reaction from orm.topic import Topic, TopicFollower from orm.user import AuthorFollower, Role, User, UserRating, UserRole -from services.auth.users import UserStorage from services.stat.reacted import ReactedStorage from services.stat.topicstat import TopicStat from services.zine.authors import AuthorsStorage -from services.zine.shoutauthor import ShoutAuthorStorage +from services.zine.shoutauthor import ShoutAuthor # from .community import followed_communities from .inbox.load import get_total_unread_counter @@ -34,6 +33,7 @@ async def get_author_stat(slug): # TODO: implement author stat with local_session() as session: return { + "shouts": session.query(ShoutAuthor).where(ShoutAuthor.author == slug).count(), "followers": session.query(AuthorFollower).where(AuthorFollower.author == slug).count(), "followings": session.query(AuthorFollower).where(AuthorFollower.follower == slug).count(), "rating": session.query(func.sum(UserRating.value)).where(UserRating.user == slug).first(), diff --git a/resolvers/reactions.py b/resolvers/reactions.py index e410b2f1..c6d801c2 100644 --- a/resolvers/reactions.py +++ b/resolvers/reactions.py @@ -1,8 +1,6 @@ from datetime import datetime, timedelta from sqlalchemy import and_, desc, select, text, func -from sqlalchemy.orm import selectinload - from auth.authenticate import login_required from base.orm import local_session from base.resolvers import mutation, query @@ -14,7 +12,7 @@ from services.stat.reacted import ReactedStorage async def get_reaction_stat(reaction_id): return { - # "viewed": await ViewStat.get_reaction(reaction_id), + # "viewed": await ViewedStorage.get_reaction(reaction_id), "reacted": len(await ReactedStorage.get_reaction(reaction_id)), "rating": await ReactedStorage.get_reaction_rating(reaction_id), "commented": len(await ReactedStorage.get_reaction_comments(reaction_id)), diff --git a/resolvers/topics.py b/resolvers/topics.py index f1c7f1d1..399953a7 100644 --- a/resolvers/topics.py +++ b/resolvers/topics.py @@ -9,7 +9,7 @@ from orm.topic import Topic, TopicFollower from services.zine.topics import TopicStorage from services.stat.reacted import ReactedStorage from services.stat.topicstat import TopicStat -from services.stat.views import ViewStat +from services.stat.viewed import ViewedStorage async def get_topic_stat(slug): @@ -17,7 +17,7 @@ async def get_topic_stat(slug): "shouts": len(TopicStat.shouts_by_topic.get(slug, {}).keys()), "authors": len(TopicStat.authors_by_topic.get(slug, {}).keys()), "followers": len(TopicStat.followers_by_topic.get(slug, {}).keys()), - "viewed": await ViewStat.get_topic(slug), + "viewed": await ViewedStorage.get_topic(slug), "reacted": len(await ReactedStorage.get_topic(slug)), "commented": len(await ReactedStorage.get_topic_comments(slug)), "rating": await ReactedStorage.get_topic_rating(slug) diff --git a/services/stat/reacted.py b/services/stat/reacted.py index d91b2daf..fd3d1d93 100644 --- a/services/stat/reacted.py +++ b/services/stat/reacted.py @@ -2,7 +2,7 @@ import asyncio from base.orm import local_session from orm.reaction import ReactionKind, Reaction from services.zine.topics import TopicStorage -from services.stat.views import ViewStat +from services.stat.viewed import ViewedStorage def kind_to_rate(kind) -> int: @@ -36,7 +36,7 @@ class ReactedStorage: @staticmethod async def get_shout_stat(slug): return { - "viewed": await ViewStat.get_shout(slug), + "viewed": await ViewedStorage.get_shout(slug), "reacted": len(await ReactedStorage.get_shout(slug)), "commented": len(await ReactedStorage.get_comments(slug)), "rating": await ReactedStorage.get_rating(slug),