spacetimedb-cli 0.3.3

A command line interface for SpacetimeDB
Documentation
---
source: crates/cli/tests/codegen.rs
expression: outfiles
---
"RepeatingTestReducer.cs" = '''
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN RUST INSTEAD.

using System;
using ClientApi;
using Newtonsoft.Json.Linq;

namespace SpacetimeDB
{
	public static partial class Reducer
	{
		public static event Action<ClientApi.Event.Types.Status, Identity, ulong> OnRepeatingTestEvent;

		public static void RepeatingTest(ulong prevTime)
		{
			NetworkManager.instance.InternalCallReducer("repeating_test", new object[] { prevTime });
		}

		[ReducerEvent(FunctionName = "repeating_test")]
		public static void OnRepeatingTest(ClientApi.Event dbEvent)
		{
			if(OnRepeatingTestEvent != null)
			{
				var jsonString = dbEvent.FunctionCall.ArgBytes.ToStringUtf8();
				var args = Newtonsoft.Json.JsonConvert.DeserializeObject<JArray>(jsonString);
				if(args.Count >= 1)
				{
					OnRepeatingTestEvent(dbEvent.Status, Identity.From(dbEvent.CallerIdentity.ToByteArray()), args[0].ToObject<ulong>());
				}
			}
		}
	}
}
'''
"TestA.cs" = '''
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN RUST INSTEAD.

using System;

namespace SpacetimeDB
{
	public partial class TestA : IDatabaseTable
	{
		[Newtonsoft.Json.JsonProperty("x")]
		public uint X;
		[Newtonsoft.Json.JsonProperty("y")]
		public uint Y;
		[Newtonsoft.Json.JsonProperty("z")]
		public string Z;

		public static SpacetimeDB.SATS.AlgebraicType GetAlgebraicType()
		{
			return SpacetimeDB.SATS.AlgebraicType.CreateProductType(new SpacetimeDB.SATS.ProductTypeElement[]
			{
				new SpacetimeDB.SATS.ProductTypeElement("x", SpacetimeDB.SATS.AlgebraicType.CreatePrimitiveType(SpacetimeDB.SATS.BuiltinType.Type.U32)),
				new SpacetimeDB.SATS.ProductTypeElement("y", SpacetimeDB.SATS.AlgebraicType.CreatePrimitiveType(SpacetimeDB.SATS.BuiltinType.Type.U32)),
				new SpacetimeDB.SATS.ProductTypeElement("z", SpacetimeDB.SATS.AlgebraicType.CreatePrimitiveType(SpacetimeDB.SATS.BuiltinType.Type.String)),
			});
		}

		public static explicit operator TestA(SpacetimeDB.SATS.AlgebraicValue value)
		{
			var productValue = value.AsProductValue();
			return new TestA
			{
				X = productValue.elements[0].AsU32(),
				Y = productValue.elements[1].AsU32(),
				Z = productValue.elements[2].AsString(),
			};
		}

		public static System.Collections.Generic.IEnumerable<TestA> Iter()
		{
			foreach(var entry in NetworkManager.clientDB.GetEntries("TestA"))
			{
				yield return (TestA)entry;
			}
		}
		public static int Count()
		{
			return NetworkManager.clientDB.Count("TestA");
		}
		public static System.Collections.Generic.IEnumerable<TestA> FilterByX(uint value)
		{
			foreach(var entry in NetworkManager.clientDB.GetEntries("TestA"))
			{
				var productValue = entry.AsProductValue();
				var compareValue = (uint)productValue.elements[0].AsU32();
				if (compareValue == value) {
					yield return (TestA)entry;
				}
			}
		}

		public static System.Collections.Generic.IEnumerable<TestA> FilterByY(uint value)
		{
			foreach(var entry in NetworkManager.clientDB.GetEntries("TestA"))
			{
				var productValue = entry.AsProductValue();
				var compareValue = (uint)productValue.elements[1].AsU32();
				if (compareValue == value) {
					yield return (TestA)entry;
				}
			}
		}

		public static System.Collections.Generic.IEnumerable<TestA> FilterByZ(string value)
		{
			foreach(var entry in NetworkManager.clientDB.GetEntries("TestA"))
			{
				var productValue = entry.AsProductValue();
				var compareValue = (string)productValue.elements[2].AsString();
				if (compareValue == value) {
					yield return (TestA)entry;
				}
			}
		}

		public static event Action<TestA> OnInsert;
		public static event Action<TestA, TestA> OnUpdate;
		public static event Action<TestA> OnDelete;
		public static event Action<NetworkManager.TableOp, TestA, TestA> OnRowUpdate;

		public static void OnInsertEvent(object newValue)
		{
			OnInsert?.Invoke((TestA)newValue);
		}

		public static void OnUpdateEvent(object oldValue, object newValue)
		{
			OnUpdate?.Invoke((TestA)oldValue,(TestA)newValue);
		}

		public static void OnDeleteEvent(object oldValue)
		{
			OnDelete?.Invoke((TestA)oldValue);
		}

		public static void OnRowUpdateEvent(NetworkManager.TableOp op, object oldValue, object newValue)
		{
			OnRowUpdate?.Invoke(op, (TestA)oldValue,(TestA)newValue);
		}
	}
}
'''
"TestB.cs" = '''
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN RUST INSTEAD.

using System;

namespace SpacetimeDB
{
	public partial class TestB : IDatabaseTable
	{
		[Newtonsoft.Json.JsonProperty("foo")]
		public string Foo;

		public static SpacetimeDB.SATS.AlgebraicType GetAlgebraicType()
		{
			return SpacetimeDB.SATS.AlgebraicType.CreateProductType(new SpacetimeDB.SATS.ProductTypeElement[]
			{
				new SpacetimeDB.SATS.ProductTypeElement("foo", SpacetimeDB.SATS.AlgebraicType.CreatePrimitiveType(SpacetimeDB.SATS.BuiltinType.Type.String)),
			});
		}

		public static explicit operator TestB(SpacetimeDB.SATS.AlgebraicValue value)
		{
			var productValue = value.AsProductValue();
			return new TestB
			{
				Foo = productValue.elements[0].AsString(),
			};
		}

	}
}
'''
"TestReducer.cs" = '''
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN RUST INSTEAD.

using System;
using ClientApi;
using Newtonsoft.Json.Linq;

namespace SpacetimeDB
{
	public static partial class Reducer
	{
		public static event Action<ClientApi.Event.Types.Status, Identity, TestA, TestB, TestC> OnTestEvent;

		public static void Test(TestA arg, TestB arg2, TestC arg3)
		{
			NetworkManager.instance.InternalCallReducer("test", new object[] { arg, arg2, arg3 });
		}

		[ReducerEvent(FunctionName = "test")]
		public static void OnTest(ClientApi.Event dbEvent)
		{
			if(OnTestEvent != null)
			{
				var jsonString = dbEvent.FunctionCall.ArgBytes.ToStringUtf8();
				var args = Newtonsoft.Json.JsonConvert.DeserializeObject<JArray>(jsonString);
				if(args.Count >= 3)
				{
					OnTestEvent(dbEvent.Status, Identity.From(dbEvent.CallerIdentity.ToByteArray()), args[0].ToObject<TestA>(), args[1].ToObject<TestB>(), args[2].ToObject<TestC>());
				}
			}
		}
	}
}
'''