Skip to content

Commit cf73acf

Browse files
Add primary keys for C++ procedural views (#5354)
# Description of Changes Adds primary keys to procedural views in C++. This mirrors the work from #5111, #5246, and #5327 adding the feature and the docs changes. # API and ABI breaking changes None # Expected complexity level and risk 3 # Testing - [x] Equivalent tests as were added in #5111 and #5246 for rust, typescript, and C#
1 parent d8de4ab commit cf73acf

26 files changed

Lines changed: 221 additions & 30 deletions

File tree

crates/bindings-cpp/include/spacetimedb/internal/Module.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <string>
55
#include <vector>
66
#include <optional>
7+
#include <utility>
78
#include "../bsatn/types.h"
89
#include "../reducer_macros.h"
910
#include "../reducer_context.h"
@@ -120,6 +121,7 @@ class Module {
120121
static void RegisterExplicitTableName(const std::string& source_name, const std::string& canonical_name);
121122
static void RegisterExplicitFunctionName(const std::string& source_name, const std::string& canonical_name);
122123
static void RegisterExplicitIndexName(const std::string& source_name, const std::string& canonical_name);
124+
static void RegisterViewPrimaryKey(const std::string& view_source_name, std::vector<std::string> columns);
123125
};
124126

125127
// Helper functions for module description
@@ -178,6 +180,10 @@ class Module {
178180
static void RegisterExplicitIndexName(const char* source_name, const char* canonical_name) {
179181
Internal::Module::RegisterExplicitIndexName(source_name, canonical_name);
180182
}
183+
184+
static void RegisterViewPrimaryKey(const char* view_source_name, std::vector<std::string> columns) {
185+
Internal::Module::RegisterViewPrimaryKey(view_source_name, std::move(columns));
186+
}
181187
};
182188

183189
// Global registration functions for X-Macro support

crates/bindings-cpp/include/spacetimedb/internal/autogen/RawMiscModuleExportV9.g.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
#include "../autogen_base.h"
1414
#include "spacetimedb/bsatn/bsatn.h"
1515
#include "RawColumnDefaultValueV9.g.h"
16-
#include "RawProcedureDefV9.g.h"
1716
#include "RawViewDefV9.g.h"
17+
#include "RawProcedureDefV9.g.h"
1818

1919
namespace SpacetimeDB::Internal {
2020

crates/bindings-cpp/include/spacetimedb/internal/autogen/RawModuleDef.g.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
#include "../autogen_base.h"
1414
#include "spacetimedb/bsatn/bsatn.h"
1515
#include "RawModuleDefV8.g.h"
16-
#include "RawModuleDefV9.g.h"
1716
#include "RawModuleDefV10.g.h"
17+
#include "RawModuleDefV9.g.h"
1818

1919
namespace SpacetimeDB::Internal {
2020

crates/bindings-cpp/include/spacetimedb/internal/autogen/RawModuleDefV10Section.g.h

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,22 @@
1212
#include <memory>
1313
#include "../autogen_base.h"
1414
#include "spacetimedb/bsatn/bsatn.h"
15-
#include "RawProcedureDefV10.g.h"
16-
#include "CaseConversionPolicy.g.h"
17-
#include "RawLifeCycleReducerDefV10.g.h"
18-
#include "RawReducerDefV10.g.h"
19-
#include "RawHttpHandlerDefV10.g.h"
20-
#include "RawTypeDefV10.g.h"
21-
#include "ExplicitNames.g.h"
15+
#include "RawViewPrimaryKeyDefV10.g.h"
16+
#include "RawTableDefV10.g.h"
2217
#include "RawViewDefV10.g.h"
2318
#include "RawScheduleDefV10.g.h"
24-
#include "Typespace.g.h"
25-
#include "RawTableDefV10.g.h"
19+
#include "CaseConversionPolicy.g.h"
2620
#include "RawRowLevelSecurityDefV9.g.h"
2721
#include "RawHttpRouteDefV10.g.h"
22+
#include "RawReducerDefV10.g.h"
23+
#include "Typespace.g.h"
24+
#include "RawLifeCycleReducerDefV10.g.h"
25+
#include "ExplicitNames.g.h"
26+
#include "RawHttpHandlerDefV10.g.h"
27+
#include "RawTypeDefV10.g.h"
28+
#include "RawProcedureDefV10.g.h"
2829

2930
namespace SpacetimeDB::Internal {
3031

31-
SPACETIMEDB_INTERNAL_TAGGED_ENUM(RawModuleDefV10Section, SpacetimeDB::Internal::Typespace, std::vector<SpacetimeDB::Internal::RawTypeDefV10>, std::vector<SpacetimeDB::Internal::RawTableDefV10>, std::vector<SpacetimeDB::Internal::RawReducerDefV10>, std::vector<SpacetimeDB::Internal::RawProcedureDefV10>, std::vector<SpacetimeDB::Internal::RawViewDefV10>, std::vector<SpacetimeDB::Internal::RawScheduleDefV10>, std::vector<SpacetimeDB::Internal::RawLifeCycleReducerDefV10>, std::vector<SpacetimeDB::Internal::RawRowLevelSecurityDefV9>, SpacetimeDB::Internal::CaseConversionPolicy, SpacetimeDB::Internal::ExplicitNames, std::vector<SpacetimeDB::Internal::RawHttpHandlerDefV10>, std::vector<SpacetimeDB::Internal::RawHttpRouteDefV10>)
32+
SPACETIMEDB_INTERNAL_TAGGED_ENUM(RawModuleDefV10Section, SpacetimeDB::Internal::Typespace, std::vector<SpacetimeDB::Internal::RawTypeDefV10>, std::vector<SpacetimeDB::Internal::RawTableDefV10>, std::vector<SpacetimeDB::Internal::RawReducerDefV10>, std::vector<SpacetimeDB::Internal::RawProcedureDefV10>, std::vector<SpacetimeDB::Internal::RawViewDefV10>, std::vector<SpacetimeDB::Internal::RawScheduleDefV10>, std::vector<SpacetimeDB::Internal::RawLifeCycleReducerDefV10>, std::vector<SpacetimeDB::Internal::RawRowLevelSecurityDefV9>, SpacetimeDB::Internal::CaseConversionPolicy, SpacetimeDB::Internal::ExplicitNames, std::vector<SpacetimeDB::Internal::RawHttpHandlerDefV10>, std::vector<SpacetimeDB::Internal::RawHttpRouteDefV10>, std::vector<SpacetimeDB::Internal::RawViewPrimaryKeyDefV10>)
3233
} // namespace SpacetimeDB::Internal

crates/bindings-cpp/include/spacetimedb/internal/autogen/RawModuleDefV8.g.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
#include "../autogen_base.h"
1414
#include "spacetimedb/bsatn/bsatn.h"
1515
#include "MiscModuleExport.g.h"
16-
#include "ReducerDef.g.h"
17-
#include "TableDesc.g.h"
1816
#include "Typespace.g.h"
17+
#include "TableDesc.g.h"
18+
#include "ReducerDef.g.h"
1919

2020
namespace SpacetimeDB::Internal {
2121

crates/bindings-cpp/include/spacetimedb/internal/autogen/RawModuleDefV9.g.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
#include "../autogen_base.h"
1414
#include "spacetimedb/bsatn/bsatn.h"
1515
#include "RawTableDefV9.g.h"
16-
#include "RawRowLevelSecurityDefV9.g.h"
17-
#include "Typespace.g.h"
1816
#include "RawReducerDefV9.g.h"
1917
#include "RawTypeDefV9.g.h"
18+
#include "Typespace.g.h"
2019
#include "RawMiscModuleExportV9.g.h"
20+
#include "RawRowLevelSecurityDefV9.g.h"
2121

2222
namespace SpacetimeDB::Internal {
2323

crates/bindings-cpp/include/spacetimedb/internal/autogen/RawProcedureDefV10.g.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
#include <memory>
1313
#include "../autogen_base.h"
1414
#include "spacetimedb/bsatn/bsatn.h"
15-
#include "AlgebraicType.g.h"
1615
#include "FunctionVisibility.g.h"
1716
#include "ProductType.g.h"
17+
#include "AlgebraicType.g.h"
1818

1919
namespace SpacetimeDB::Internal {
2020

crates/bindings-cpp/include/spacetimedb/internal/autogen/RawProcedureDefV9.g.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
#include <memory>
1313
#include "../autogen_base.h"
1414
#include "spacetimedb/bsatn/bsatn.h"
15-
#include "ProductType.g.h"
1615
#include "AlgebraicType.g.h"
16+
#include "ProductType.g.h"
1717

1818
namespace SpacetimeDB::Internal {
1919

crates/bindings-cpp/include/spacetimedb/internal/autogen/RawReducerDefV10.g.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
#include <memory>
1313
#include "../autogen_base.h"
1414
#include "spacetimedb/bsatn/bsatn.h"
15-
#include "ProductType.g.h"
1615
#include "FunctionVisibility.g.h"
16+
#include "ProductType.g.h"
1717
#include "AlgebraicType.g.h"
1818

1919
namespace SpacetimeDB::Internal {

crates/bindings-cpp/include/spacetimedb/internal/autogen/RawReducerDefV9.g.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
#include <memory>
1313
#include "../autogen_base.h"
1414
#include "spacetimedb/bsatn/bsatn.h"
15-
#include "Lifecycle.g.h"
1615
#include "ProductType.g.h"
16+
#include "Lifecycle.g.h"
1717

1818
namespace SpacetimeDB::Internal {
1919

0 commit comments

Comments
 (0)