Skip to content

Commit 5746ff5

Browse files
authored
Put SQL queries into separate files for better maintainability and to get statistics for SQL (#15)
1 parent 34ffd86 commit 5746ff5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+213
-308
lines changed

CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,15 @@ userver_target_generate_chaotic(${PROJECT_NAME}-chgen
4747
${CMAKE_CURRENT_SOURCE_DIR}
4848
)
4949
target_link_libraries(${PROJECT_NAME}_objs PUBLIC ${PROJECT_NAME}-chgen)
50+
51+
userver_add_sql_library(
52+
${PROJECT_NAME}_sql
53+
NAMESPACE real_medium
54+
OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}
55+
SQL_FILES src/db/*.sql
56+
)
57+
target_link_libraries(${PROJECT_NAME}_objs PUBLIC ${PROJECT_NAME}_sql)
58+
5059
target_link_libraries(${PROJECT_NAME}_objs PUBLIC cpp-jwt)
5160

5261
find_package(ICU COMPONENTS uc i18n REQUIRED)

src/cache/articles_cache.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@
44

55
namespace real_medium::cache::articles_cache {
66

7-
userver::storages::postgres::Query ArticlesCachePolicy::kQuery =
8-
userver::storages::postgres::Query(real_medium::sql::kSelectFullArticleInfo.c_str());
7+
userver::storages::postgres::Query ArticlesCachePolicy::kQuery = real_medium::sql::kSelectFullArticleInfo;
98

109
void ArticlesCacheContainer::insert_or_assign(Key&& key, Article&& article) {
1110
auto article_ptr = std::make_shared<const Article>(std::move(article));

src/cache/comments_cache.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88

99
namespace real_medium::cache::comments_cache {
1010

11-
userver::storages::postgres::Query CommentCachePolicy::kQuery =
12-
userver::storages::postgres::Query(real_medium::sql::kSelectCachedComments.c_str());
11+
userver::storages::postgres::Query CommentCachePolicy::kQuery = real_medium::sql::kSelectCachedComments;
1312

1413
void CommentsCacheContainer::insert_or_assign(
1514
real_medium::cache::comments_cache::CommentsCacheContainer::Key&& comment_id,

src/db/add_comment.sql

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
WITH comment AS (
2+
INSERT INTO real_medium.comments(body, user_id, article_id)
3+
VALUES ($1, $2, $3)
4+
RETURNING *
5+
)
6+
SELECT
7+
comment.comment_id,
8+
comment.created_at,
9+
comment.updated_at,
10+
comment.body,
11+
(
12+
SELECT
13+
ROW(users.username, users.bio, users.image, false)::real_medium.profile
14+
FROM real_medium.users
15+
WHERE user_id = $2
16+
) AS author
17+
FROM comment

src/db/create_article.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
SELECT real_medium.create_article($1, $2, $3, $4, $5, $6)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
UPDATE real_medium.articles
2+
SET favorites_count=favorites_count - 1
3+
WHERE article_id=$1

src/db/delete_article_by_slug.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
SELECT real_medium.delete_article_by_slug($1, $2)

src/db/delete_comment_by_id.sql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
DELETE FROM real_medium.comments
2+
WHERE comment_id = $1 AND user_id = $2
3+
RETURNING *

src/db/delete_favorite_pair.sql

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
WITH tmp(article_id, user_id) AS (
2+
SELECT article_id, $1 FROM real_medium.articles WHERE slug=$2
3+
)
4+
DELETE FROM real_medium.favorites
5+
WHERE (article_id, user_id) IN (SELECT article_id, user_id FROM tmp)
6+
RETURNING article_id
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
SELECT real_medium.get_articles_by_filters($1, $2, $3, $4, $5, $6)

0 commit comments

Comments
 (0)