mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-10-02 10:53:44 +00:00
CDFdb opens cdclient.fdb once per process and hands out a table when its columns match the CDServer.sqlite table of the same name. CDServer.sqlite stays the source of truth: the CDServer migrations change a few rows, so FindChangedKeys compares both files row by row (a hash per row, summed per key) and returns the keys that differ, for the tables to read from SQLite. RowFields reads an fdb row with CppSQLite3Query's accessors and defaults, so a table fills its entries from either file with one piece of code. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
39 lines
1.1 KiB
CMake
39 lines
1.1 KiB
CMake
set(DDATABASE_CDCLIENTDATABASE_SOURCES
|
|
"CDClientDatabase.cpp"
|
|
"CDClientManager.cpp"
|
|
"CDFdb.cpp"
|
|
)
|
|
|
|
add_subdirectory(CDClientTables)
|
|
|
|
foreach(file ${DDATABASE_CDCLIENTDATABASE_CDCLIENTTABLES_SOURCES})
|
|
set(DDATABASE_CDCLIENTDATABASE_SOURCES ${DDATABASE_CDCLIENTDATABASE_SOURCES} "CDClientTables/${file}")
|
|
endforeach()
|
|
|
|
add_library(dDatabaseCDClient STATIC ${DDATABASE_CDCLIENTDATABASE_SOURCES})
|
|
target_include_directories(dDatabaseCDClient PUBLIC "."
|
|
"CDClientTables"
|
|
"${PROJECT_SOURCE_DIR}/dCommon"
|
|
"${PROJECT_SOURCE_DIR}/dCommon/dEnums"
|
|
)
|
|
# FdbReader lives in dCommon
|
|
target_link_libraries(dDatabaseCDClient PRIVATE sqlite3 glm::glm dCommon)
|
|
|
|
if (${CDCLIENT_CACHE_ALL})
|
|
add_compile_definitions(dDatabaseCDClient PRIVATE CDCLIENT_CACHE_ALL=${CDCLIENT_CACHE_ALL})
|
|
endif()
|
|
|
|
file(
|
|
GLOB HEADERS_DDATABASE_CDCLIENT
|
|
LIST_DIRECTORIES false
|
|
${PROJECT_SOURCE_DIR}/thirdparty/SQLite/*.h
|
|
CDClientTables/*.h
|
|
*.h
|
|
)
|
|
|
|
# Need to specify to use the CXX compiler language here or else we get errors including <string>.
|
|
target_precompile_headers(
|
|
dDatabaseCDClient PRIVATE
|
|
"$<$<COMPILE_LANGUAGE:CXX>:${HEADERS_DDATABASE_CDCLIENT}>"
|
|
)
|