Skip to content

Commit 93d11d7

Browse files
committed
Make v2 article methods as general
1 parent 19e4c8f commit 93d11d7

File tree

5 files changed

+2
-190
lines changed

5 files changed

+2
-190
lines changed

conduit/api/routes/article.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ async def get_article_feed(
2828
"""
2929
Get article feed from following users.
3030
"""
31-
articles_feed_dto = await article_service.get_articles_feed_v2(
31+
articles_feed_dto = await article_service.get_articles_feed(
3232
session=session,
3333
current_user=current_user,
3434
limit=pagination.limit,
@@ -48,7 +48,7 @@ async def get_global_article_feed(
4848
"""
4949
Get global article feed.
5050
"""
51-
articles_feed_dto = await article_service.get_articles_by_filters_v2(
51+
articles_feed_dto = await article_service.get_articles_by_filters(
5252
session=session,
5353
current_user=current_user,
5454
tag=articles_filters.tag,

conduit/domain/repositories/article.py

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -36,26 +36,10 @@ async def update_by_slug(
3636
@abc.abstractmethod
3737
async def list_by_followings(
3838
self, session: Any, user_id: int, limit: int, offset: int
39-
) -> list[ArticleRecordDTO]: ...
40-
41-
@abc.abstractmethod
42-
async def list_by_followings_v2(
43-
self, session: Any, user_id: int, limit: int, offset: int
4439
) -> list[ArticleDTO]: ...
4540

4641
@abc.abstractmethod
4742
async def list_by_filters(
48-
self,
49-
session: Any,
50-
limit: int,
51-
offset: int,
52-
tag: str | None = None,
53-
author: str | None = None,
54-
favorited: str | None = None,
55-
) -> list[ArticleRecordDTO]: ...
56-
57-
@abc.abstractmethod
58-
async def list_by_filters_v2(
5943
self,
6044
session: Any,
6145
user_id: int | None,

conduit/domain/services/article.py

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,6 @@ async def get_articles_feed(
3232
self, session: Any, current_user: UserDTO, limit: int, offset: int
3333
) -> ArticlesFeedDTO: ...
3434

35-
@abc.abstractmethod
36-
async def get_articles_feed_v2(
37-
self, session: Any, current_user: UserDTO, limit: int, offset: int
38-
) -> ArticlesFeedDTO: ...
39-
4035
@abc.abstractmethod
4136
async def get_articles_by_filters(
4237
self,
@@ -49,18 +44,6 @@ async def get_articles_by_filters(
4944
favorited: str | None = None,
5045
) -> ArticlesFeedDTO: ...
5146

52-
@abc.abstractmethod
53-
async def get_articles_by_filters_v2(
54-
self,
55-
session: Any,
56-
current_user: UserDTO | None,
57-
limit: int,
58-
offset: int,
59-
tag: str | None = None,
60-
author: str | None = None,
61-
favorited: str | None = None,
62-
) -> ArticlesFeedDTO: ...
63-
6447
@abc.abstractmethod
6548
async def update_article_by_slug(
6649
self,

conduit/infrastructure/repositories/article.py

Lines changed: 0 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -105,39 +105,6 @@ async def update_by_slug(
105105

106106
async def list_by_followings(
107107
self, session: AsyncSession, user_id: int, limit: int, offset: int
108-
) -> list[ArticleRecordDTO]:
109-
query = (
110-
(
111-
select(
112-
Article.id,
113-
Article.author_id,
114-
Article.slug,
115-
Article.title,
116-
Article.description,
117-
Article.body,
118-
Article.created_at,
119-
Article.updated_at,
120-
User.username,
121-
User.bio,
122-
User.image_url,
123-
)
124-
)
125-
.join(
126-
Follower,
127-
(
128-
(Follower.following_id == Article.author_id)
129-
& (Follower.follower_id == user_id)
130-
),
131-
)
132-
.join(User, (User.id == Article.author_id))
133-
.order_by(Article.created_at)
134-
)
135-
query = query.limit(limit).offset(offset)
136-
articles = await session.execute(query)
137-
return [self._article_mapper.to_dto(article) for article in articles]
138-
139-
async def list_by_followings_v2(
140-
self, session: AsyncSession, user_id: int, limit: int, offset: int
141108
) -> list[ArticleDTO]:
142109
query = (
143110
select(
@@ -201,66 +168,6 @@ async def list_by_followings_v2(
201168
return [self._to_article_dto(article) for article in articles]
202169

203170
async def list_by_filters(
204-
self,
205-
session: AsyncSession,
206-
limit: int,
207-
offset: int,
208-
tag: str | None = None,
209-
author: str | None = None,
210-
favorited: str | None = None,
211-
) -> list[ArticleRecordDTO]:
212-
query = (
213-
select(
214-
Article.id,
215-
Article.author_id,
216-
Article.slug,
217-
Article.title,
218-
Article.description,
219-
Article.body,
220-
Article.created_at,
221-
Article.updated_at,
222-
)
223-
).order_by(Article.created_at)
224-
225-
if tag:
226-
# fmt: off
227-
query = query.join(
228-
ArticleTag,
229-
(Article.id == ArticleTag.article_id),
230-
).where(
231-
ArticleTag.tag_id == select(Tag.id).where(
232-
Tag.tag == tag
233-
).scalar_subquery()
234-
)
235-
# fmt: on
236-
237-
if author:
238-
# fmt: off
239-
query = query.join(
240-
User,
241-
(User.id == Article.author_id)
242-
).where(
243-
User.username == author
244-
)
245-
# fmt: on
246-
247-
if favorited:
248-
# fmt: off
249-
query = query.join(
250-
Favorite,
251-
(Favorite.article_id == Article.id)
252-
).where(
253-
Favorite.user_id == select(User.id).where(
254-
User.username == favorited
255-
).scalar_subquery()
256-
)
257-
# fmt: on
258-
259-
query = query.limit(limit).offset(offset)
260-
articles = await session.execute(query)
261-
return [self._article_mapper.to_dto(article) for article in articles]
262-
263-
async def list_by_filters_v2(
264171
self,
265172
session: AsyncSession,
266173
user_id: int | None,

conduit/services/article.py

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -122,43 +122,6 @@ async def get_articles_by_filters(
122122
favorited: str | None = None,
123123
) -> ArticlesFeedDTO:
124124
articles = await self._article_repo.list_by_filters(
125-
session=session,
126-
limit=limit,
127-
offset=offset,
128-
tag=tag,
129-
author=author,
130-
favorited=favorited,
131-
)
132-
profiles_map = await self._get_profiles_mapping(
133-
session=session, articles=articles, current_user=current_user
134-
)
135-
articles_with_extra = [
136-
await self._get_article_info(
137-
session=session,
138-
article=article,
139-
profile=profiles_map[article.author_id],
140-
user_id=current_user.id if current_user else None,
141-
)
142-
for article in articles
143-
]
144-
articles_count = await self._article_repo.count_by_filters(
145-
session=session, tag=tag, author=author, favorited=favorited
146-
)
147-
return ArticlesFeedDTO(
148-
articles=articles_with_extra, articles_count=articles_count
149-
)
150-
151-
async def get_articles_by_filters_v2(
152-
self,
153-
session: AsyncSession,
154-
current_user: UserDTO | None,
155-
limit: int,
156-
offset: int,
157-
tag: str | None = None,
158-
author: str | None = None,
159-
favorited: str | None = None,
160-
) -> ArticlesFeedDTO:
161-
articles = await self._article_repo.list_by_filters_v2(
162125
session=session,
163126
user_id=current_user.id if current_user else None,
164127
limit=limit,
@@ -178,31 +141,6 @@ async def get_articles_feed(
178141
articles = await self._article_repo.list_by_followings(
179142
session=session, user_id=current_user.id, limit=limit, offset=offset
180143
)
181-
profiles_map = await self._get_profiles_mapping(
182-
session=session, articles=articles, current_user=current_user
183-
)
184-
articles_with_extra = [
185-
await self._get_article_info(
186-
session=session,
187-
article=article,
188-
profile=profiles_map[article.author_id],
189-
user_id=current_user.id,
190-
)
191-
for article in articles
192-
]
193-
articles_count = await self._article_repo.count_by_followings(
194-
session=session, user_id=current_user.id
195-
)
196-
return ArticlesFeedDTO(
197-
articles=articles_with_extra, articles_count=articles_count
198-
)
199-
200-
async def get_articles_feed_v2(
201-
self, session: AsyncSession, current_user: UserDTO, limit: int, offset: int
202-
) -> ArticlesFeedDTO:
203-
articles = await self._article_repo.list_by_followings_v2(
204-
session=session, user_id=current_user.id, limit=limit, offset=offset
205-
)
206144
articles_count = await self._article_repo.count_by_followings(
207145
session=session, user_id=current_user.id
208146
)

0 commit comments

Comments
 (0)