---
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>());
}
}
}
}
}
'''