spacetimedb-cli 0.2.3

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

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 TypeDef GetTypeDef()
		{
			return TypeDef.Tuple(new ElementDef[]
			{
				new SpacetimeDB.ElementDef(0, SpacetimeDB.TypeDef.BuiltInType(SpacetimeDB.TypeDef.Def.U32)),
				new SpacetimeDB.ElementDef(1, SpacetimeDB.TypeDef.BuiltInType(SpacetimeDB.TypeDef.Def.U32)),
				new SpacetimeDB.ElementDef(2, SpacetimeDB.TypeDef.BuiltInType(SpacetimeDB.TypeDef.Def.String)),
			});
		}

		public static explicit operator TestA(TypeValue value)
		{
			var tupleValue = value.GetValue(TypeDef.Def.Tuple) as TypeValue[];
			if (tupleValue == null)
			{
				throw new System.InvalidOperationException($"Invalid value (must be Tuple): {value.TypeDef.Type}");
			}

			return new TestA
			{
				x = (uint)tupleValue[0].GetValue(TypeDef.Def.U32),
				y = (uint)tupleValue[1].GetValue(TypeDef.Def.U32),
				z = (string)tupleValue[2].GetValue(TypeDef.Def.String),
			};
		}
		public static System.Collections.Generic.IEnumerable<TestA> FilterByX(uint value)
		{
			foreach(var entry in NetworkManager.clientDB.GetEntries("TestA"))
			{
				var tupleArr = entry.GetValue(TypeDef.Def.Tuple) as TypeValue[];
				if (tupleArr == null) continue;
				var compareValue = (uint)tupleArr[0].GetValue(TypeDef.Def.U32);
				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 tupleArr = entry.GetValue(TypeDef.Def.Tuple) as TypeValue[];
				if (tupleArr == null) continue;
				var compareValue = (uint)tupleArr[1].GetValue(TypeDef.Def.U32);
				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 tupleArr = entry.GetValue(TypeDef.Def.Tuple) as TypeValue[];
				if (tupleArr == null) continue;
				var compareValue = (string)tupleArr[2].GetValue(TypeDef.Def.String);
				if (compareValue == value)
					yield return (TestA)entry;
			}
		}

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

namespace SpacetimeDB
{
	public partial class TestB : IDatabaseTable
	{
		[Newtonsoft.Json.JsonProperty("foo")]
		public string foo;
		public static TypeDef GetTypeDef()
		{
			return TypeDef.Tuple(new ElementDef[]
			{
				new SpacetimeDB.ElementDef(0, SpacetimeDB.TypeDef.BuiltInType(SpacetimeDB.TypeDef.Def.String)),
			});
		}

		public static explicit operator TestB(TypeValue value)
		{
			var tupleValue = value.GetValue(TypeDef.Def.Tuple) as TypeValue[];
			if (tupleValue == null)
			{
				throw new System.InvalidOperationException($"Invalid value (must be Tuple): {value.TypeDef.Type}");
			}

			return new TestB
			{
				foo = (string)tupleValue[0].GetValue(TypeDef.Def.String),
			};
		}
	}
}
'''
"TestReducer.cs" = '''
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN RUST INSTEAD.

namespace SpacetimeDB
{
	public static partial class Reducer
	{
		public static void Test(TestA arg, TestB arg2)
		{
			NetworkManager.instance.InternalCallReducer(new NetworkManager.Message
			{
				fn = "test",
				args = new object[] { arg, arg2 },
			});
		}
	}
}
'''