From 32e43cad5bcbf35a6aea9c9c273deb92c84f6ca9 Mon Sep 17 00:00:00 2001 From: Zeke Foppa <196249+bfops@users.noreply.github.com> Date: Thu, 29 Aug 2024 09:36:05 -0700 Subject: [PATCH 1/3] CI - Only allow `release/*` branches to merge into `master` (#124) ## Description of Changes Redo these PRs: - https://github.com/clockworklabs/com.clockworklabs.spacetimedbsdk-archive/pull/56 - https://github.com/clockworklabs/com.clockworklabs.spacetimedbsdk-archive/pull/59 - https://github.com/clockworklabs/com.clockworklabs.spacetimedbsdk-archive/pull/61 I'm not sure how these repos were merged in https://github.com/clockworklabs/spacetimedb-csharp-sdk/pull/117, but it appears that this wasn't carried over. (Either way we need to make this a required check). ## API No ## Requires SpacetimeDB PRs *List any PRs here that are required for this SDK change to work* Co-authored-by: Zeke Foppa --- .github/workflows/check-pr-base.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/check-pr-base.yml diff --git a/.github/workflows/check-pr-base.yml b/.github/workflows/check-pr-base.yml new file mode 100644 index 00000000..73b71c27 --- /dev/null +++ b/.github/workflows/check-pr-base.yml @@ -0,0 +1,22 @@ +name: Git tree checks + +on: + pull_request: + types: [opened, edited, reopened, synchronize] + merge_group: +permissions: read-all + +jobs: + check_base_ref: + name: Only release branches may merge into master + runs-on: ubuntu-latest + steps: + - id: not_based_on_master + if: | + github.event_name == 'pull_request' && + github.event.pull_request.base.ref == 'master' && + ! startsWith(github.event.pull_request.head.ref, 'release/') + run: | + echo 'Only `release/*` branches are allowed to merge into `master`.' + echo 'Maybe your PR should be merging into `staging`?' + exit 1 From d46057cbcb17c837a10b89396485df68703a181e Mon Sep 17 00:00:00 2001 From: Zeke Foppa <196249+bfops@users.noreply.github.com> Date: Fri, 30 Aug 2024 13:44:55 -0700 Subject: [PATCH 2/3] Update DEVELOP.md to reflect new codegen (#119) (#125) ## Description of Changes #123 reverted the non-code-changes in #119. This cherrypicks them back. See the discussion at https://github.com/clockworklabs/com.clockworklabs.spacetimedbsdk/commit/732dd2872b501ef3d41060ac9da06cb8d7f07226#r146042766 for more context. Co-authored-by: Jeremie Pelletier --- DEVELOP.md | 17 +++------------- src/SpacetimeDB/ClientApi/CallReducer.cs | 5 ++--- src/SpacetimeDB/ClientApi/ClientMessage.cs | 1 + src/SpacetimeDB/ClientApi/DatabaseUpdate.cs | 3 ++- src/SpacetimeDB/ClientApi/EnergyQuanta.cs | 3 ++- src/SpacetimeDB/ClientApi/IdentityToken.cs | 5 ++--- .../ClientApi/InitialSubscription.cs | 5 ++--- src/SpacetimeDB/ClientApi/OneOffQuery.cs | 4 ++-- .../ClientApi/OneOffQueryResponse.cs | 8 +++----- src/SpacetimeDB/ClientApi/OneOffTable.cs | 6 +++--- src/SpacetimeDB/ClientApi/ReducerCallInfo.cs | 6 ++---- src/SpacetimeDB/ClientApi/ServerMessage.cs | 1 + src/SpacetimeDB/ClientApi/Subscribe.cs | 4 ++-- src/SpacetimeDB/ClientApi/TableUpdate.cs | 10 ++++------ .../ClientApi/TransactionUpdate.cs | 7 +------ tools~/gen-client-api.bat | 20 +++++++++++++++++++ tools~/gen-client-api.sh | 15 ++++++++++++++ 17 files changed, 67 insertions(+), 53 deletions(-) create mode 100644 tools~/gen-client-api.bat create mode 100644 tools~/gen-client-api.sh diff --git a/DEVELOP.md b/DEVELOP.md index de08bc70..2b9ac7d9 100644 --- a/DEVELOP.md +++ b/DEVELOP.md @@ -1,17 +1,6 @@ # Notes for maintainers -## `ClientApi.cs` +## `SpacetimeDB.ClientApi` -The file `ClientApi.cs` is generated by [ProtoBuf](https://protobuf.dev/) -from [the SpacetimeDB client-api-messages proto definition](https://github.com/clockworklabs/SpacetimeDB/blob/master/crates/client-api-messages/protobuf/client_api.proto). -This is not automated. -Whenever the `client_api.proto` changes, you'll have to manually re-run `protoc` to re-generate the definitions. - -```sh -cd ~/clockworklabs/SpacetimeDB/crates/client-api-messages/protobuf -protoc --csharp_out=/absolute/path/to/spacetimedb-csharp-sdk/src \ - ./client_api.proto -``` - -Note that `protoc` cannot understand paths that start with `~`; -you must write the absolute path starting from `/`. +To regenerate this namespace, run the `tools~/gen-client-api.sh` or the +`tools~/gen-client-api.bat` script. diff --git a/src/SpacetimeDB/ClientApi/CallReducer.cs b/src/SpacetimeDB/ClientApi/CallReducer.cs index 0d065d40..d3f56f38 100644 --- a/src/SpacetimeDB/ClientApi/CallReducer.cs +++ b/src/SpacetimeDB/ClientApi/CallReducer.cs @@ -12,17 +12,16 @@ namespace SpacetimeDB.ClientApi { - [DataContract] [SpacetimeDB.Type] + [DataContract] public partial class CallReducer { [DataMember(Name = "reducer")] public string Reducer = ""; - [DataMember(Name = "args")] public SpacetimeDB.ClientApi.EncodedValue Args = null!; - [DataMember(Name = "request_id")] public uint RequestId; + } } diff --git a/src/SpacetimeDB/ClientApi/ClientMessage.cs b/src/SpacetimeDB/ClientApi/ClientMessage.cs index 4badf680..9cb1c4c7 100644 --- a/src/SpacetimeDB/ClientApi/ClientMessage.cs +++ b/src/SpacetimeDB/ClientApi/ClientMessage.cs @@ -5,6 +5,7 @@ #nullable enable using System; +using SpacetimeDB; namespace SpacetimeDB.ClientApi { diff --git a/src/SpacetimeDB/ClientApi/DatabaseUpdate.cs b/src/SpacetimeDB/ClientApi/DatabaseUpdate.cs index 0cf2567e..245117ad 100644 --- a/src/SpacetimeDB/ClientApi/DatabaseUpdate.cs +++ b/src/SpacetimeDB/ClientApi/DatabaseUpdate.cs @@ -12,11 +12,12 @@ namespace SpacetimeDB.ClientApi { - [DataContract] [SpacetimeDB.Type] + [DataContract] public partial class DatabaseUpdate { [DataMember(Name = "tables")] public System.Collections.Generic.List Tables = new(); + } } diff --git a/src/SpacetimeDB/ClientApi/EnergyQuanta.cs b/src/SpacetimeDB/ClientApi/EnergyQuanta.cs index 7cd07b36..ba142cb3 100644 --- a/src/SpacetimeDB/ClientApi/EnergyQuanta.cs +++ b/src/SpacetimeDB/ClientApi/EnergyQuanta.cs @@ -12,11 +12,12 @@ namespace SpacetimeDB.ClientApi { - [DataContract] [SpacetimeDB.Type] + [DataContract] public partial class EnergyQuanta { [DataMember(Name = "quanta")] public U128 Quanta; + } } diff --git a/src/SpacetimeDB/ClientApi/IdentityToken.cs b/src/SpacetimeDB/ClientApi/IdentityToken.cs index b1bbd183..344cbbba 100644 --- a/src/SpacetimeDB/ClientApi/IdentityToken.cs +++ b/src/SpacetimeDB/ClientApi/IdentityToken.cs @@ -12,17 +12,16 @@ namespace SpacetimeDB.ClientApi { - [DataContract] [SpacetimeDB.Type] + [DataContract] public partial class IdentityToken { [DataMember(Name = "identity")] public SpacetimeDB.Identity Identity = new(); - [DataMember(Name = "token")] public string Token = ""; - [DataMember(Name = "address")] public SpacetimeDB.Address Address = new(); + } } diff --git a/src/SpacetimeDB/ClientApi/InitialSubscription.cs b/src/SpacetimeDB/ClientApi/InitialSubscription.cs index ed704238..06ae7ba8 100644 --- a/src/SpacetimeDB/ClientApi/InitialSubscription.cs +++ b/src/SpacetimeDB/ClientApi/InitialSubscription.cs @@ -12,17 +12,16 @@ namespace SpacetimeDB.ClientApi { - [DataContract] [SpacetimeDB.Type] + [DataContract] public partial class InitialSubscription { [DataMember(Name = "database_update")] public SpacetimeDB.ClientApi.DatabaseUpdate DatabaseUpdate = new(); - [DataMember(Name = "request_id")] public uint RequestId; - [DataMember(Name = "total_host_execution_duration_micros")] public ulong TotalHostExecutionDurationMicros; + } } diff --git a/src/SpacetimeDB/ClientApi/OneOffQuery.cs b/src/SpacetimeDB/ClientApi/OneOffQuery.cs index c4625fe5..c103c829 100644 --- a/src/SpacetimeDB/ClientApi/OneOffQuery.cs +++ b/src/SpacetimeDB/ClientApi/OneOffQuery.cs @@ -12,14 +12,14 @@ namespace SpacetimeDB.ClientApi { - [DataContract] [SpacetimeDB.Type] + [DataContract] public partial class OneOffQuery { [DataMember(Name = "message_id")] public byte[] MessageId = Array.Empty(); - [DataMember(Name = "query_string")] public string QueryString = ""; + } } diff --git a/src/SpacetimeDB/ClientApi/OneOffQueryResponse.cs b/src/SpacetimeDB/ClientApi/OneOffQueryResponse.cs index 4e98289f..35c1d0eb 100644 --- a/src/SpacetimeDB/ClientApi/OneOffQueryResponse.cs +++ b/src/SpacetimeDB/ClientApi/OneOffQueryResponse.cs @@ -12,20 +12,18 @@ namespace SpacetimeDB.ClientApi { - [DataContract] [SpacetimeDB.Type] + [DataContract] public partial class OneOffQueryResponse { [DataMember(Name = "message_id")] public byte[] MessageId = Array.Empty(); - [DataMember(Name = "error")] public string? Error; - [DataMember(Name = "tables")] - public List Tables = new(); - + public System.Collections.Generic.List Tables = new(); [DataMember(Name = "total_host_execution_duration_micros")] public ulong TotalHostExecutionDurationMicros; + } } diff --git a/src/SpacetimeDB/ClientApi/OneOffTable.cs b/src/SpacetimeDB/ClientApi/OneOffTable.cs index 84fa81bf..12f7e0f9 100644 --- a/src/SpacetimeDB/ClientApi/OneOffTable.cs +++ b/src/SpacetimeDB/ClientApi/OneOffTable.cs @@ -12,14 +12,14 @@ namespace SpacetimeDB.ClientApi { - [DataContract] [SpacetimeDB.Type] + [DataContract] public partial class OneOffTable { [DataMember(Name = "table_name")] public string TableName = ""; - [DataMember(Name = "rows")] - public List Rows = new(); + public System.Collections.Generic.List Rows = new(); + } } diff --git a/src/SpacetimeDB/ClientApi/ReducerCallInfo.cs b/src/SpacetimeDB/ClientApi/ReducerCallInfo.cs index 86a67416..44bc8865 100644 --- a/src/SpacetimeDB/ClientApi/ReducerCallInfo.cs +++ b/src/SpacetimeDB/ClientApi/ReducerCallInfo.cs @@ -12,20 +12,18 @@ namespace SpacetimeDB.ClientApi { - [DataContract] [SpacetimeDB.Type] + [DataContract] public partial class ReducerCallInfo { [DataMember(Name = "reducer_name")] public string ReducerName = ""; - [DataMember(Name = "reducer_id")] public uint ReducerId; - [DataMember(Name = "args")] public SpacetimeDB.ClientApi.EncodedValue Args = null!; - [DataMember(Name = "request_id")] public uint RequestId; + } } diff --git a/src/SpacetimeDB/ClientApi/ServerMessage.cs b/src/SpacetimeDB/ClientApi/ServerMessage.cs index 7f4bf714..46b5be3a 100644 --- a/src/SpacetimeDB/ClientApi/ServerMessage.cs +++ b/src/SpacetimeDB/ClientApi/ServerMessage.cs @@ -5,6 +5,7 @@ #nullable enable using System; +using SpacetimeDB; namespace SpacetimeDB.ClientApi { diff --git a/src/SpacetimeDB/ClientApi/Subscribe.cs b/src/SpacetimeDB/ClientApi/Subscribe.cs index e844a347..d5eaba81 100644 --- a/src/SpacetimeDB/ClientApi/Subscribe.cs +++ b/src/SpacetimeDB/ClientApi/Subscribe.cs @@ -12,14 +12,14 @@ namespace SpacetimeDB.ClientApi { - [DataContract] [SpacetimeDB.Type] + [DataContract] public partial class Subscribe { [DataMember(Name = "query_strings")] public System.Collections.Generic.List QueryStrings = new(); - [DataMember(Name = "request_id")] public uint RequestId; + } } diff --git a/src/SpacetimeDB/ClientApi/TableUpdate.cs b/src/SpacetimeDB/ClientApi/TableUpdate.cs index 63400ee6..b9b47ea5 100644 --- a/src/SpacetimeDB/ClientApi/TableUpdate.cs +++ b/src/SpacetimeDB/ClientApi/TableUpdate.cs @@ -12,20 +12,18 @@ namespace SpacetimeDB.ClientApi { - [DataContract] [SpacetimeDB.Type] + [DataContract] public partial class TableUpdate { [DataMember(Name = "table_id")] public uint TableId; - [DataMember(Name = "table_name")] public string TableName = ""; - [DataMember(Name = "deletes")] - public List Deletes = new(); - + public System.Collections.Generic.List Deletes = new(); [DataMember(Name = "inserts")] - public List Inserts = new(); + public System.Collections.Generic.List Inserts = new(); + } } diff --git a/src/SpacetimeDB/ClientApi/TransactionUpdate.cs b/src/SpacetimeDB/ClientApi/TransactionUpdate.cs index 5861e9ee..fb71dd9e 100644 --- a/src/SpacetimeDB/ClientApi/TransactionUpdate.cs +++ b/src/SpacetimeDB/ClientApi/TransactionUpdate.cs @@ -18,23 +18,18 @@ public partial class TransactionUpdate { [DataMember(Name = "status")] public SpacetimeDB.ClientApi.UpdateStatus Status = null!; - [DataMember(Name = "timestamp")] public SpacetimeDB.ClientApi.Timestamp Timestamp = new(); - [DataMember(Name = "caller_identity")] public SpacetimeDB.Identity CallerIdentity = new(); - [DataMember(Name = "caller_address")] public SpacetimeDB.Address CallerAddress = new(); - [DataMember(Name = "reducer_call")] public SpacetimeDB.ClientApi.ReducerCallInfo ReducerCall = new(); - [DataMember(Name = "energy_quanta_used")] public SpacetimeDB.ClientApi.EnergyQuanta EnergyQuantaUsed = new(); - [DataMember(Name = "host_execution_duration_micros")] public ulong HostExecutionDurationMicros; + } } diff --git a/tools~/gen-client-api.bat b/tools~/gen-client-api.bat new file mode 100644 index 00000000..9eb66c49 --- /dev/null +++ b/tools~/gen-client-api.bat @@ -0,0 +1,20 @@ +@echo off +setlocal + +if "%CL_HOME%"=="" ( + echo "Variable CL_HOME not set" + exit /b 1 +) + +cd %CL_HOME%\SpacetimeDB\crates\client-api-messages +cargo run --example get_ws_schema > %CL_HOME%/schema.json + +cd %CL_HOME%\SpacetimeDB\crates\cli +cargo run -- generate -l csharp -n SpacetimeDB.ClientApi ^ + --json-module %CL_HOME%\schema.json ^ + -o %CL_HOME%\spacetimedb-csharp-sdk\src\SpacetimeDB\ClientApi + +cd %CL_HOME%\spacetimedb-csharp-sdk\src\SpacetimeDB\ClientApi +del /q _Globals + +del %CL_HOME%\schema.json diff --git a/tools~/gen-client-api.sh b/tools~/gen-client-api.sh new file mode 100644 index 00000000..91fbe3da --- /dev/null +++ b/tools~/gen-client-api.sh @@ -0,0 +1,15 @@ +#!/bin/sh -eu +: $CL_HOME + +cd $CL_HOME/SpacetimeDB/crates/client-api-messages +cargo run --example get_ws_schema > $CL_HOME/schema.json + +cd $CL_HOME/SpacetimeDB/crates/cli +cargo run -- generate -l csharp -n SpacetimeDB.ClientApi \ + --json-module $CL_HOME/schema.json \ + -o $CL_HOME/spacetimedb-csharp-sdk/src/SpacetimeDB/ClientApi + +cd $CL_HOME/spacetimedb-csharp-sdk/src/SpacetimeDB/ClientApi +rm -rf _Globals + +rm -f $CL_HOME/schema.json From 4cf062b257054549a915afe8816b8752cd621341 Mon Sep 17 00:00:00 2001 From: Zeke Foppa <196249+bfops@users.noreply.github.com> Date: Tue, 10 Sep 2024 09:39:56 -0700 Subject: [PATCH 3/3] Cherrypick #127: Copy files from old repo (#129) ## Description of Changes This releases a cherrypick of #127, so that `master` has the correct version number. ## API No breaking changes. ## Requires SpacetimeDB PRs None Co-authored-by: Zeke Foppa --- README.md | 3 +-- package.json | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 189d6612..18cb6f04 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,9 @@ This repository contains the [Unity](https://unity.com/) SDK for SpacetimeDB. Th ## Documentation -The Unity SDK uses the same code as the C# SDK. You can find the documentation for the C# SDK in the [C# SDK Reference](README.dotnet.md). +The Unity SDK uses the same code as the C# SDK. You can find the documentation for the C# SDK in the [C# SDK Reference](https://spacetimedb.com/docs/sdks/c-sharp) There is also a comprehensive Unity tutorial/demo available: - - [Unity Tutorial](https://spacetimedb.com/docs/unity/part-1) Doc - [Unity Demo](https://github.com/clockworklabs/SpacetimeDBUnityTutorial) Repo diff --git a/package.json b/package.json index 8f6aa864..86f04059 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "com.clockworklabs.spacetimedbsdk", "displayName": "SpacetimeDB SDK", - "version": "0.10.0", + "version": "0.11.0", "description": "The SpacetimeDB Client SDK is a software development kit (SDK) designed to interact with and manipulate SpacetimeDB modules..", "keywords": [], "author": {