Skip to content

Commit bcbb7a6

Browse files
committed
feat cmake: use GLOB_RECURSE in userver_add_sql_library
Closes: #1006 commit_hash:c6696910dfc67cd583d77ec0ec04dbb4baf558ba
1 parent 7b4bf1d commit bcbb7a6

File tree

9 files changed

+33
-17
lines changed

9 files changed

+33
-17
lines changed

.mapping.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3777,11 +3777,11 @@
37773777
"samples/postgres_cache_order_by/tests/static/test_data.sql":"taxi/uservices/userver/samples/postgres_cache_order_by/tests/static/test_data.sql",
37783778
"samples/postgres_cache_order_by/tests/test_cache_order_by.py":"taxi/uservices/userver/samples/postgres_cache_order_by/tests/test_cache_order_by.py",
37793779
"samples/postgres_service/CMakeLists.txt":"taxi/uservices/userver/samples/postgres_service/CMakeLists.txt",
3780-
"samples/postgres_service/delete_value.sql":"taxi/uservices/userver/samples/postgres_service/delete_value.sql",
3781-
"samples/postgres_service/insert_value.sql":"taxi/uservices/userver/samples/postgres_service/insert_value.sql",
37823780
"samples/postgres_service/main.cpp":"taxi/uservices/userver/samples/postgres_service/main.cpp",
3781+
"samples/postgres_service/queries/read/select_value.sql":"taxi/uservices/userver/samples/postgres_service/queries/read/select_value.sql",
3782+
"samples/postgres_service/queries/write/delete_value.sql":"taxi/uservices/userver/samples/postgres_service/queries/write/delete_value.sql",
3783+
"samples/postgres_service/queries/write/insert_value.sql":"taxi/uservices/userver/samples/postgres_service/queries/write/insert_value.sql",
37833784
"samples/postgres_service/schemas/postgresql/admin.sql":"taxi/uservices/userver/samples/postgres_service/schemas/postgresql/admin.sql",
3784-
"samples/postgres_service/select_value.sql":"taxi/uservices/userver/samples/postgres_service/select_value.sql",
37853785
"samples/postgres_service/static_config.yaml":"taxi/uservices/userver/samples/postgres_service/static_config.yaml",
37863786
"samples/postgres_service/tests/conftest.py":"taxi/uservices/userver/samples/postgres_service/tests/conftest.py",
37873787
"samples/postgres_service/tests/test_postgres.py":"taxi/uservices/userver/samples/postgres_service/tests/test_postgres.py",

cmake/UserverSql.cmake

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ _userver_prepare_sql()
2020

2121
function(userver_add_sql_library TARGET)
2222
set(OPTIONS)
23-
set(ONE_VALUE_ARGS OUTPUT_DIR NAMESPACE QUERY_LOG_MODE)
23+
set(ONE_VALUE_ARGS SOURCE_DIR OUTPUT_DIR NAMESPACE QUERY_LOG_MODE)
2424
set(MULTI_VALUE_ARGS SQL_FILES)
2525
cmake_parse_arguments(ARG "${OPTIONS}" "${ONE_VALUE_ARGS}" "${MULTI_VALUE_ARGS}" ${ARGN})
2626
if(NOT ARG_NAMESPACE)
@@ -30,12 +30,19 @@ function(userver_add_sql_library TARGET)
3030
set(ARG_QUERY_LOG_MODE "full")
3131
endif()
3232
set(FILENAME "sql_queries")
33+
if(NOT ARG_SOURCE_DIR)
34+
set(ARG_SOURCE_DIR ".")
35+
endif()
36+
if(NOT IS_ABSOLUTE "${ARG_SOURCE_DIR}")
37+
set(ARG_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${ARG_SOURCE_DIR}")
38+
endif()
3339

3440
set(SQL_FILES)
3541
foreach(WILDCARD ${ARG_SQL_FILES})
36-
file(GLOB FILES ${WILDCARD})
42+
file(GLOB_RECURSE FILES RELATIVE ${ARG_SOURCE_DIR} "${ARG_SOURCE_DIR}/${WILDCARD}")
3743
list(APPEND SQL_FILES ${FILES})
3844
endforeach()
45+
list(TRANSFORM SQL_FILES PREPEND "${ARG_SOURCE_DIR}/")
3946

4047
get_property(USERVER_SQL_PYTHON_BINARY GLOBAL PROPERTY userver_sql_python_binary)
4148
get_property(USERVER_SQL_SCRIPTS_PATH GLOBAL PROPERTY userver_scripts_sql)
@@ -50,7 +57,8 @@ function(userver_add_sql_library TARGET)
5057
OUTPUT ${output_files}
5158
COMMAND
5259
${USERVER_SQL_PYTHON_BINARY} ${USERVER_SQL_SCRIPTS_PATH}/generator.py --namespace ${ARG_NAMESPACE}
53-
--output-dir ${ARG_OUTPUT_DIR} --query-log-mode ${ARG_QUERY_LOG_MODE} --testsuite-output-dir
60+
--source-dir ${ARG_SOURCE_DIR} --output-dir ${ARG_OUTPUT_DIR}
61+
--query-log-mode ${ARG_QUERY_LOG_MODE} --testsuite-output-dir
5462
${TESTSUITE_OUTPUT_DIR} ${SQL_FILES} ${CODEGEN}
5563
DEPENDS ${SQL_FILES}
5664
)

samples/postgres_service/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ userver_add_sql_library(
1515
${PROJECT_NAME}_sql
1616
NAMESPACE
1717
samples_postgres_service
18+
SOURCE_DIR
19+
queries
1820
OUTPUT_DIR
1921
${CMAKE_CURRENT_BINARY_DIR}
2022
SQL_FILES

scripts/docs/en/userver/sql_files.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# External SQL/YQL files
1+
# Embedding SQL/YQL files via userver_add_sql_library
22

3-
You may generate SQL queries or YQL queries (for YDB) from external .sql/.yql files.
3+
You may generate SQL queries or YQL queries (for YDB) from `.sql` / `.yql` files.
44
To do this, call the following cmake function in your CMakeLists.txt:
55

66
@snippet samples/postgres_service/CMakeLists.txt Postgres service sample - CMakeLists.txt

scripts/docs/en/userver/tutorial/postgres_service.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ KeyValue component only uses the thread safe DB client. In more complex cases
5555
We can generate the necessary `storages::Query` objects from external SQL/YQL files.
5656

5757
In our case, we have the following files:
58-
* @ref samples/postgres_service/select_value.sql
59-
* @ref samples/postgres_service/insert_value.sql
60-
* @ref samples/postgres_service/delete_value.sql
58+
* @ref samples/postgres_service/queries/read/select_value.sql
59+
* @ref samples/postgres_service/queries/write/insert_value.sql
60+
* @ref samples/postgres_service/queries/write/delete_value.sql
6161

6262
From which we will get:
6363
@code{.hpp}
@@ -225,6 +225,6 @@ See the full example:
225225
@example samples/postgres_service/CMakeLists.txt
226226
@example samples/postgres_service/tests/conftest.py
227227
@example samples/postgres_service/tests/test_postgres.py
228-
@example samples/postgres_service/select_value.sql
229-
@example samples/postgres_service/insert_value.sql
230-
@example samples/postgres_service/delete_value.sql
228+
@example samples/postgres_service/queries/read/select_value.sql
229+
@example samples/postgres_service/queries/write/insert_value.sql
230+
@example samples/postgres_service/queries/write/delete_value.sql

scripts/sql/generator.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,17 @@ def parse_args():
3434
required=True,
3535
help='C++ namespace to use',
3636
)
37+
parser.add_argument(
38+
'--source-dir',
39+
type=str,
40+
required=True,
41+
help='path to the directory with .sql files',
42+
)
3743
parser.add_argument(
3844
'--output-dir',
3945
type=str,
4046
required=True,
41-
help='full path to output .hpp file',
47+
help='path to the directory with .hpp-.cpp files to generate',
4248
)
4349
parser.add_argument(
4450
'--query-log-mode',
@@ -53,7 +59,7 @@ def parse_args():
5359
required=True,
5460
help='full path to generated tests',
5561
)
56-
parser.add_argument('files', nargs='*', help='input .sql files to process')
62+
parser.add_argument('files', nargs='*', help='input .sql files to process (relative to the cwd, not source-dir)')
5763
return parser.parse_args()
5864

5965

@@ -97,7 +103,7 @@ def read_items(args) -> List[SqlQuery]:
97103
name = pathlib.Path(filename).stem # TODO: CamelCase
98104
items.append(
99105
SqlQuery(
100-
source=filename,
106+
source=os.path.relpath(filename, args.source_dir),
101107
contents=content,
102108
name=name,
103109
variable=('k' + camel_case(name)),

0 commit comments

Comments
 (0)