---
source: crates/cli/tests/codegen.rs
expression: outfiles
---
"AddPlayerReducer.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 delegate void AddPlayerHandler(ReducerEvent reducerEvent, string name);
public static event AddPlayerHandler OnAddPlayerEvent;
public static void AddPlayer(string name)
{
var _argArray = new object[] {name};
var _message = new SpacetimeDBClient.ReducerCallRequest {
fn = "add_player",
args = _argArray,
};
SpacetimeDBClient.instance.InternalCallReducer(Newtonsoft.Json.JsonConvert.SerializeObject(_message, _settings));
}
[ReducerCallback(FunctionName = "add_player")]
public static bool OnAddPlayer(ClientApi.Event dbEvent)
{
if(OnAddPlayerEvent != null)
{
var args = ((ReducerEvent)dbEvent.FunctionCall.CallInfo).AddPlayerArgs;
OnAddPlayerEvent((ReducerEvent)dbEvent.FunctionCall.CallInfo
,(string)args.Name
);
return true;
}
return false;
}
[DeserializeEvent(FunctionName = "add_player")]
public static void AddPlayerDeserializeEventArgs(ClientApi.Event dbEvent)
{
var args = new AddPlayerArgsStruct();
var bsatnBytes = dbEvent.FunctionCall.ArgBytes;
using var ms = new System.IO.MemoryStream();
ms.SetLength(bsatnBytes.Length);
bsatnBytes.CopyTo(ms.GetBuffer(), 0);
ms.Position = 0;
using var reader = new System.IO.BinaryReader(ms);
var args_0_value = SpacetimeDB.SATS.AlgebraicValue.Deserialize(SpacetimeDB.SATS.AlgebraicType.CreatePrimitiveType(SpacetimeDB.SATS.BuiltinType.Type.String), reader);
args.Name = args_0_value.AsString();
dbEvent.FunctionCall.CallInfo = new ReducerEvent(ReducerType.AddPlayer, "add_player", dbEvent.Timestamp, Identity.From(dbEvent.CallerIdentity.ToByteArray()), Address.From(dbEvent.CallerAddress.ToByteArray()), dbEvent.Message, dbEvent.Status, args);
}
}
public partial class AddPlayerArgsStruct
{
public string Name;
}
}
'''
"AddPrivateReducer.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 delegate void AddPrivateHandler(ReducerEvent reducerEvent, string name);
public static event AddPrivateHandler OnAddPrivateEvent;
public static void AddPrivate(string name)
{
var _argArray = new object[] {name};
var _message = new SpacetimeDBClient.ReducerCallRequest {
fn = "add_private",
args = _argArray,
};
SpacetimeDBClient.instance.InternalCallReducer(Newtonsoft.Json.JsonConvert.SerializeObject(_message, _settings));
}
[ReducerCallback(FunctionName = "add_private")]
public static bool OnAddPrivate(ClientApi.Event dbEvent)
{
if(OnAddPrivateEvent != null)
{
var args = ((ReducerEvent)dbEvent.FunctionCall.CallInfo).AddPrivateArgs;
OnAddPrivateEvent((ReducerEvent)dbEvent.FunctionCall.CallInfo
,(string)args.Name
);
return true;
}
return false;
}
[DeserializeEvent(FunctionName = "add_private")]
public static void AddPrivateDeserializeEventArgs(ClientApi.Event dbEvent)
{
var args = new AddPrivateArgsStruct();
var bsatnBytes = dbEvent.FunctionCall.ArgBytes;
using var ms = new System.IO.MemoryStream();
ms.SetLength(bsatnBytes.Length);
bsatnBytes.CopyTo(ms.GetBuffer(), 0);
ms.Position = 0;
using var reader = new System.IO.BinaryReader(ms);
var args_0_value = SpacetimeDB.SATS.AlgebraicValue.Deserialize(SpacetimeDB.SATS.AlgebraicType.CreatePrimitiveType(SpacetimeDB.SATS.BuiltinType.Type.String), reader);
args.Name = args_0_value.AsString();
dbEvent.FunctionCall.CallInfo = new ReducerEvent(ReducerType.AddPrivate, "add_private", dbEvent.Timestamp, Identity.From(dbEvent.CallerIdentity.ToByteArray()), Address.From(dbEvent.CallerAddress.ToByteArray()), dbEvent.Message, dbEvent.Status, args);
}
}
public partial class AddPrivateArgsStruct
{
public string Name;
}
}
'''
"DeletePlayerReducer.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 delegate void DeletePlayerHandler(ReducerEvent reducerEvent, ulong id);
public static event DeletePlayerHandler OnDeletePlayerEvent;
public static void DeletePlayer(ulong id)
{
var _argArray = new object[] {id};
var _message = new SpacetimeDBClient.ReducerCallRequest {
fn = "delete_player",
args = _argArray,
};
SpacetimeDBClient.instance.InternalCallReducer(Newtonsoft.Json.JsonConvert.SerializeObject(_message, _settings));
}
[ReducerCallback(FunctionName = "delete_player")]
public static bool OnDeletePlayer(ClientApi.Event dbEvent)
{
if(OnDeletePlayerEvent != null)
{
var args = ((ReducerEvent)dbEvent.FunctionCall.CallInfo).DeletePlayerArgs;
OnDeletePlayerEvent((ReducerEvent)dbEvent.FunctionCall.CallInfo
,(ulong)args.Id
);
return true;
}
return false;
}
[DeserializeEvent(FunctionName = "delete_player")]
public static void DeletePlayerDeserializeEventArgs(ClientApi.Event dbEvent)
{
var args = new DeletePlayerArgsStruct();
var bsatnBytes = dbEvent.FunctionCall.ArgBytes;
using var ms = new System.IO.MemoryStream();
ms.SetLength(bsatnBytes.Length);
bsatnBytes.CopyTo(ms.GetBuffer(), 0);
ms.Position = 0;
using var reader = new System.IO.BinaryReader(ms);
var args_0_value = SpacetimeDB.SATS.AlgebraicValue.Deserialize(SpacetimeDB.SATS.AlgebraicType.CreatePrimitiveType(SpacetimeDB.SATS.BuiltinType.Type.U64), reader);
args.Id = args_0_value.AsU64();
dbEvent.FunctionCall.CallInfo = new ReducerEvent(ReducerType.DeletePlayer, "delete_player", dbEvent.Timestamp, Identity.From(dbEvent.CallerIdentity.ToByteArray()), Address.From(dbEvent.CallerAddress.ToByteArray()), dbEvent.Message, dbEvent.Status, args);
}
}
public partial class DeletePlayerArgsStruct
{
public ulong Id;
}
}
'''
"DeletePlayersByNameReducer.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 delegate void DeletePlayersByNameHandler(ReducerEvent reducerEvent, string name);
public static event DeletePlayersByNameHandler OnDeletePlayersByNameEvent;
public static void DeletePlayersByName(string name)
{
var _argArray = new object[] {name};
var _message = new SpacetimeDBClient.ReducerCallRequest {
fn = "delete_players_by_name",
args = _argArray,
};
SpacetimeDBClient.instance.InternalCallReducer(Newtonsoft.Json.JsonConvert.SerializeObject(_message, _settings));
}
[ReducerCallback(FunctionName = "delete_players_by_name")]
public static bool OnDeletePlayersByName(ClientApi.Event dbEvent)
{
if(OnDeletePlayersByNameEvent != null)
{
var args = ((ReducerEvent)dbEvent.FunctionCall.CallInfo).DeletePlayersByNameArgs;
OnDeletePlayersByNameEvent((ReducerEvent)dbEvent.FunctionCall.CallInfo
,(string)args.Name
);
return true;
}
return false;
}
[DeserializeEvent(FunctionName = "delete_players_by_name")]
public static void DeletePlayersByNameDeserializeEventArgs(ClientApi.Event dbEvent)
{
var args = new DeletePlayersByNameArgsStruct();
var bsatnBytes = dbEvent.FunctionCall.ArgBytes;
using var ms = new System.IO.MemoryStream();
ms.SetLength(bsatnBytes.Length);
bsatnBytes.CopyTo(ms.GetBuffer(), 0);
ms.Position = 0;
using var reader = new System.IO.BinaryReader(ms);
var args_0_value = SpacetimeDB.SATS.AlgebraicValue.Deserialize(SpacetimeDB.SATS.AlgebraicType.CreatePrimitiveType(SpacetimeDB.SATS.BuiltinType.Type.String), reader);
args.Name = args_0_value.AsString();
dbEvent.FunctionCall.CallInfo = new ReducerEvent(ReducerType.DeletePlayersByName, "delete_players_by_name", dbEvent.Timestamp, Identity.From(dbEvent.CallerIdentity.ToByteArray()), Address.From(dbEvent.CallerAddress.ToByteArray()), dbEvent.Message, dbEvent.Status, args);
}
}
public partial class DeletePlayersByNameArgsStruct
{
public string Name;
}
}
'''
"NamespaceTestC.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 Namespace
{
public partial class Types
{
public enum TestC
{
Foo,
Bar,
}
}
public static SpacetimeDB.SATS.AlgebraicType GetAlgebraicTypeForTestC()
{
return SpacetimeDB.SATS.AlgebraicType.CreateSumType(new System.Collections.Generic.List<SpacetimeDB.SATS.SumTypeVariant>
{
new SpacetimeDB.SATS.SumTypeVariant("Foo", SpacetimeDB.SATS.AlgebraicType.CreateProductType(new SpacetimeDB.SATS.ProductTypeElement[]
{
})),
new SpacetimeDB.SATS.SumTypeVariant("Bar", SpacetimeDB.SATS.AlgebraicType.CreateProductType(new SpacetimeDB.SATS.ProductTypeElement[]
{
})),
});
}
public static Namespace.Types.TestC IntoTestC(SpacetimeDB.SATS.AlgebraicValue value)
{
var sumValue = value.AsSumValue();
switch (sumValue.tag)
{
case 0:
return Namespace.Types.TestC.Foo;
case 1:
return Namespace.Types.TestC.Bar;
}
return default;
}
}
}
'''
"PkMultiIdentity.cs" = '''
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN RUST INSTEAD.
using System;
using System.Collections.Generic;
namespace SpacetimeDB
{
[Newtonsoft.Json.JsonObject(Newtonsoft.Json.MemberSerialization.OptIn)]
public partial class PkMultiIdentity : IDatabaseTable
{
[Newtonsoft.Json.JsonProperty("id")]
public uint Id;
[Newtonsoft.Json.JsonProperty("other")]
public uint Other;
private static Dictionary<uint, PkMultiIdentity> Id_Index = new Dictionary<uint, PkMultiIdentity>(16);
private static Dictionary<uint, PkMultiIdentity> Other_Index = new Dictionary<uint, PkMultiIdentity>(16);
private static void InternalOnValueInserted(object insertedValue)
{
var val = (PkMultiIdentity)insertedValue;
Id_Index[val.Id] = val;
Other_Index[val.Other] = val;
}
private static void InternalOnValueDeleted(object deletedValue)
{
var val = (PkMultiIdentity)deletedValue;
Id_Index.Remove(val.Id);
Other_Index.Remove(val.Other);
}
public static SpacetimeDB.SATS.AlgebraicType GetAlgebraicType()
{
return SpacetimeDB.SATS.AlgebraicType.CreateProductType(new SpacetimeDB.SATS.ProductTypeElement[]
{
new SpacetimeDB.SATS.ProductTypeElement("id", SpacetimeDB.SATS.AlgebraicType.CreatePrimitiveType(SpacetimeDB.SATS.BuiltinType.Type.U32)),
new SpacetimeDB.SATS.ProductTypeElement("other", SpacetimeDB.SATS.AlgebraicType.CreatePrimitiveType(SpacetimeDB.SATS.BuiltinType.Type.U32)),
});
}
public static explicit operator PkMultiIdentity(SpacetimeDB.SATS.AlgebraicValue value)
{
if (value == null) return null;
var productValue = value.AsProductValue();
return new PkMultiIdentity
{
Id = productValue.elements[0].AsU32(),
Other = productValue.elements[1].AsU32(),
};
}
public static System.Collections.Generic.IEnumerable<PkMultiIdentity> Iter()
{
foreach(var entry in SpacetimeDBClient.clientDB.GetEntries("PkMultiIdentity"))
{
yield return (PkMultiIdentity)entry.Item2;
}
}
public static int Count()
{
return SpacetimeDBClient.clientDB.Count("PkMultiIdentity");
}
public static PkMultiIdentity FilterById(uint value)
{
Id_Index.TryGetValue(value, out var r);
return r;
}
public static PkMultiIdentity FilterByOther(uint value)
{
Other_Index.TryGetValue(value, out var r);
return r;
}
public static bool ComparePrimaryKey(SpacetimeDB.SATS.AlgebraicType t, SpacetimeDB.SATS.AlgebraicValue v1, SpacetimeDB.SATS.AlgebraicValue v2)
{
var primaryColumnValue1 = v1.AsProductValue().elements[0];
var primaryColumnValue2 = v2.AsProductValue().elements[0];
return SpacetimeDB.SATS.AlgebraicValue.Compare(t.product.elements[0].algebraicType, primaryColumnValue1, primaryColumnValue2);
}
public static SpacetimeDB.SATS.AlgebraicValue GetPrimaryKeyValue(SpacetimeDB.SATS.AlgebraicValue v)
{
return v.AsProductValue().elements[0];
}
public static SpacetimeDB.SATS.AlgebraicType GetPrimaryKeyType(SpacetimeDB.SATS.AlgebraicType t)
{
return t.product.elements[0].algebraicType;
}
public delegate void InsertEventHandler(PkMultiIdentity insertedValue, SpacetimeDB.ReducerEvent dbEvent);
public delegate void UpdateEventHandler(PkMultiIdentity oldValue, PkMultiIdentity newValue, SpacetimeDB.ReducerEvent dbEvent);
public delegate void DeleteEventHandler(PkMultiIdentity deletedValue, SpacetimeDB.ReducerEvent dbEvent);
public delegate void RowUpdateEventHandler(SpacetimeDBClient.TableOp op, PkMultiIdentity oldValue, PkMultiIdentity newValue, SpacetimeDB.ReducerEvent dbEvent);
public static event InsertEventHandler OnInsert;
public static event UpdateEventHandler OnUpdate;
public static event DeleteEventHandler OnBeforeDelete;
public static event DeleteEventHandler OnDelete;
public static event RowUpdateEventHandler OnRowUpdate;
public static void OnInsertEvent(object newValue, ClientApi.Event dbEvent)
{
OnInsert?.Invoke((PkMultiIdentity)newValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnUpdateEvent(object oldValue, object newValue, ClientApi.Event dbEvent)
{
OnUpdate?.Invoke((PkMultiIdentity)oldValue,(PkMultiIdentity)newValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnBeforeDeleteEvent(object oldValue, ClientApi.Event dbEvent)
{
OnBeforeDelete?.Invoke((PkMultiIdentity)oldValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnDeleteEvent(object oldValue, ClientApi.Event dbEvent)
{
OnDelete?.Invoke((PkMultiIdentity)oldValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnRowUpdateEvent(SpacetimeDBClient.TableOp op, object oldValue, object newValue, ClientApi.Event dbEvent)
{
OnRowUpdate?.Invoke(op, (PkMultiIdentity)oldValue,(PkMultiIdentity)newValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
}
}
'''
"Point.cs" = '''
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN RUST INSTEAD.
using System;
using System.Collections.Generic;
namespace SpacetimeDB
{
[Newtonsoft.Json.JsonObject(Newtonsoft.Json.MemberSerialization.OptIn)]
public partial class Point : IDatabaseTable
{
[Newtonsoft.Json.JsonProperty("x")]
public long X;
[Newtonsoft.Json.JsonProperty("y")]
public long Y;
private static void InternalOnValueInserted(object insertedValue)
{
var val = (Point)insertedValue;
}
private static void InternalOnValueDeleted(object deletedValue)
{
var val = (Point)deletedValue;
}
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.I64)),
new SpacetimeDB.SATS.ProductTypeElement("y", SpacetimeDB.SATS.AlgebraicType.CreatePrimitiveType(SpacetimeDB.SATS.BuiltinType.Type.I64)),
});
}
public static explicit operator Point(SpacetimeDB.SATS.AlgebraicValue value)
{
if (value == null) return null;
var productValue = value.AsProductValue();
return new Point
{
X = productValue.elements[0].AsI64(),
Y = productValue.elements[1].AsI64(),
};
}
public static System.Collections.Generic.IEnumerable<Point> Iter()
{
foreach(var entry in SpacetimeDBClient.clientDB.GetEntries("Point"))
{
yield return (Point)entry.Item2;
}
}
public static int Count()
{
return SpacetimeDBClient.clientDB.Count("Point");
}
public static System.Collections.Generic.IEnumerable<Point> FilterByX(long value)
{
foreach(var entry in SpacetimeDBClient.clientDB.GetEntries("Point"))
{
var productValue = entry.Item1.AsProductValue();
var compareValue = (long)productValue.elements[0].AsI64();
if (compareValue == value)
{
yield return (Point)entry.Item2;
}
}
}
public static System.Collections.Generic.IEnumerable<Point> FilterByY(long value)
{
foreach(var entry in SpacetimeDBClient.clientDB.GetEntries("Point"))
{
var productValue = entry.Item1.AsProductValue();
var compareValue = (long)productValue.elements[1].AsI64();
if (compareValue == value)
{
yield return (Point)entry.Item2;
}
}
}
public static bool ComparePrimaryKey(SpacetimeDB.SATS.AlgebraicType t, SpacetimeDB.SATS.AlgebraicValue _v1, SpacetimeDB.SATS.AlgebraicValue _v2)
{
return false;
}
public delegate void InsertEventHandler(Point insertedValue, SpacetimeDB.ReducerEvent dbEvent);
public delegate void DeleteEventHandler(Point deletedValue, SpacetimeDB.ReducerEvent dbEvent);
public delegate void RowUpdateEventHandler(SpacetimeDBClient.TableOp op, Point oldValue, Point newValue, SpacetimeDB.ReducerEvent dbEvent);
public static event InsertEventHandler OnInsert;
public static event DeleteEventHandler OnBeforeDelete;
public static event DeleteEventHandler OnDelete;
public static event RowUpdateEventHandler OnRowUpdate;
public static void OnInsertEvent(object newValue, ClientApi.Event dbEvent)
{
OnInsert?.Invoke((Point)newValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnBeforeDeleteEvent(object oldValue, ClientApi.Event dbEvent)
{
OnBeforeDelete?.Invoke((Point)oldValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnDeleteEvent(object oldValue, ClientApi.Event dbEvent)
{
OnDelete?.Invoke((Point)oldValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnRowUpdateEvent(SpacetimeDBClient.TableOp op, object oldValue, object newValue, ClientApi.Event dbEvent)
{
OnRowUpdate?.Invoke(op, (Point)oldValue,(Point)newValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
}
}
'''
"QueryPrivateReducer.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 delegate void QueryPrivateHandler(ReducerEvent reducerEvent);
public static event QueryPrivateHandler OnQueryPrivateEvent;
public static void QueryPrivate()
{
var _argArray = new object[] {};
var _message = new SpacetimeDBClient.ReducerCallRequest {
fn = "query_private",
args = _argArray,
};
SpacetimeDBClient.instance.InternalCallReducer(Newtonsoft.Json.JsonConvert.SerializeObject(_message, _settings));
}
[ReducerCallback(FunctionName = "query_private")]
public static bool OnQueryPrivate(ClientApi.Event dbEvent)
{
if(OnQueryPrivateEvent != null)
{
var args = ((ReducerEvent)dbEvent.FunctionCall.CallInfo).QueryPrivateArgs;
OnQueryPrivateEvent((ReducerEvent)dbEvent.FunctionCall.CallInfo
);
return true;
}
return false;
}
[DeserializeEvent(FunctionName = "query_private")]
public static void QueryPrivateDeserializeEventArgs(ClientApi.Event dbEvent)
{
var args = new QueryPrivateArgsStruct();
var bsatnBytes = dbEvent.FunctionCall.ArgBytes;
using var ms = new System.IO.MemoryStream();
ms.SetLength(bsatnBytes.Length);
bsatnBytes.CopyTo(ms.GetBuffer(), 0);
ms.Position = 0;
using var reader = new System.IO.BinaryReader(ms);
dbEvent.FunctionCall.CallInfo = new ReducerEvent(ReducerType.QueryPrivate, "query_private", dbEvent.Timestamp, Identity.From(dbEvent.CallerIdentity.ToByteArray()), Address.From(dbEvent.CallerAddress.ToByteArray()), dbEvent.Message, dbEvent.Status, args);
}
}
public partial class QueryPrivateArgsStruct
{
}
}
'''
"ReducerEvent.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 enum ReducerType
{
None,
AddPlayer,
AddPrivate,
DeletePlayer,
DeletePlayersByName,
QueryPrivate,
RepeatingTest,
Test,
}
public partial class ReducerEvent : ReducerEventBase
{
public ReducerType Reducer { get; private set; }
public ReducerEvent(ReducerType reducer, string reducerName, ulong timestamp, SpacetimeDB.Identity identity, SpacetimeDB.Address? callerAddress, string errMessage, ClientApi.Event.Types.Status status, object args)
: base(reducerName, timestamp, identity, callerAddress, errMessage, status, args)
{
Reducer = reducer;
}
public AddPlayerArgsStruct AddPlayerArgs
{
get
{
if (Reducer != ReducerType.AddPlayer) throw new SpacetimeDB.ReducerMismatchException(Reducer.ToString(), "AddPlayer");
return (AddPlayerArgsStruct)Args;
}
}
public AddPrivateArgsStruct AddPrivateArgs
{
get
{
if (Reducer != ReducerType.AddPrivate) throw new SpacetimeDB.ReducerMismatchException(Reducer.ToString(), "AddPrivate");
return (AddPrivateArgsStruct)Args;
}
}
public DeletePlayerArgsStruct DeletePlayerArgs
{
get
{
if (Reducer != ReducerType.DeletePlayer) throw new SpacetimeDB.ReducerMismatchException(Reducer.ToString(), "DeletePlayer");
return (DeletePlayerArgsStruct)Args;
}
}
public DeletePlayersByNameArgsStruct DeletePlayersByNameArgs
{
get
{
if (Reducer != ReducerType.DeletePlayersByName) throw new SpacetimeDB.ReducerMismatchException(Reducer.ToString(), "DeletePlayersByName");
return (DeletePlayersByNameArgsStruct)Args;
}
}
public QueryPrivateArgsStruct QueryPrivateArgs
{
get
{
if (Reducer != ReducerType.QueryPrivate) throw new SpacetimeDB.ReducerMismatchException(Reducer.ToString(), "QueryPrivate");
return (QueryPrivateArgsStruct)Args;
}
}
public RepeatingTestArgsStruct RepeatingTestArgs
{
get
{
if (Reducer != ReducerType.RepeatingTest) throw new SpacetimeDB.ReducerMismatchException(Reducer.ToString(), "RepeatingTest");
return (RepeatingTestArgsStruct)Args;
}
}
public TestArgsStruct TestArgs
{
get
{
if (Reducer != ReducerType.Test) throw new SpacetimeDB.ReducerMismatchException(Reducer.ToString(), "Test");
return (TestArgsStruct)Args;
}
}
public object[] GetArgsAsObjectArray()
{
switch (Reducer)
{
case ReducerType.AddPlayer:
{
var args = AddPlayerArgs;
return new object[] {
args.Name,
};
}
case ReducerType.AddPrivate:
{
var args = AddPrivateArgs;
return new object[] {
args.Name,
};
}
case ReducerType.DeletePlayer:
{
var args = DeletePlayerArgs;
return new object[] {
args.Id,
};
}
case ReducerType.DeletePlayersByName:
{
var args = DeletePlayersByNameArgs;
return new object[] {
args.Name,
};
}
case ReducerType.QueryPrivate:
{
var args = QueryPrivateArgs;
return new object[] {
};
}
case ReducerType.RepeatingTest:
{
var args = RepeatingTestArgs;
return new object[] {
args.PrevTime,
};
}
case ReducerType.Test:
{
var args = TestArgs;
return new object[] {
args.Arg,
args.Arg2,
args.Arg3,
};
}
default: throw new System.Exception($"Unhandled reducer case: {Reducer}. Please run SpacetimeDB code generator");
}
}
}
}
'''
"ReducerJsonSettings.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
{
[ReducerClass]
public partial class Reducer
{
private static Newtonsoft.Json.JsonSerializerSettings _settings = new Newtonsoft.Json.JsonSerializerSettings
{
Converters = { new SpacetimeDB.SomeWrapperConverter(), new SpacetimeDB.EnumWrapperConverter() },
ContractResolver = new SpacetimeDB.JsonContractResolver(),
};
}
}
'''
"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 delegate void RepeatingTestHandler(ReducerEvent reducerEvent, ulong prevTime);
public static event RepeatingTestHandler OnRepeatingTestEvent;
public static void RepeatingTest(ulong prevTime)
{
var _argArray = new object[] {prevTime};
var _message = new SpacetimeDBClient.ReducerCallRequest {
fn = "repeating_test",
args = _argArray,
};
SpacetimeDBClient.instance.InternalCallReducer(Newtonsoft.Json.JsonConvert.SerializeObject(_message, _settings));
}
[ReducerCallback(FunctionName = "repeating_test")]
public static bool OnRepeatingTest(ClientApi.Event dbEvent)
{
if(OnRepeatingTestEvent != null)
{
var args = ((ReducerEvent)dbEvent.FunctionCall.CallInfo).RepeatingTestArgs;
OnRepeatingTestEvent((ReducerEvent)dbEvent.FunctionCall.CallInfo
,(ulong)args.PrevTime
);
return true;
}
return false;
}
[DeserializeEvent(FunctionName = "repeating_test")]
public static void RepeatingTestDeserializeEventArgs(ClientApi.Event dbEvent)
{
var args = new RepeatingTestArgsStruct();
var bsatnBytes = dbEvent.FunctionCall.ArgBytes;
using var ms = new System.IO.MemoryStream();
ms.SetLength(bsatnBytes.Length);
bsatnBytes.CopyTo(ms.GetBuffer(), 0);
ms.Position = 0;
using var reader = new System.IO.BinaryReader(ms);
var args_0_value = SpacetimeDB.SATS.AlgebraicValue.Deserialize(SpacetimeDB.SATS.AlgebraicType.CreatePrimitiveType(SpacetimeDB.SATS.BuiltinType.Type.U64), reader);
args.PrevTime = args_0_value.AsU64();
dbEvent.FunctionCall.CallInfo = new ReducerEvent(ReducerType.RepeatingTest, "repeating_test", dbEvent.Timestamp, Identity.From(dbEvent.CallerIdentity.ToByteArray()), Address.From(dbEvent.CallerAddress.ToByteArray()), dbEvent.Message, dbEvent.Status, args);
}
}
public partial class RepeatingTestArgsStruct
{
public ulong PrevTime;
}
}
'''
"TestA.cs" = '''
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN RUST INSTEAD.
using System;
using System.Collections.Generic;
namespace SpacetimeDB
{
[Newtonsoft.Json.JsonObject(Newtonsoft.Json.MemberSerialization.OptIn)]
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;
private static void InternalOnValueInserted(object insertedValue)
{
var val = (TestA)insertedValue;
}
private static void InternalOnValueDeleted(object deletedValue)
{
var val = (TestA)deletedValue;
}
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)
{
if (value == null) return null;
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 SpacetimeDBClient.clientDB.GetEntries("TestA"))
{
yield return (TestA)entry.Item2;
}
}
public static int Count()
{
return SpacetimeDBClient.clientDB.Count("TestA");
}
public static System.Collections.Generic.IEnumerable<TestA> FilterByX(uint value)
{
foreach(var entry in SpacetimeDBClient.clientDB.GetEntries("TestA"))
{
var productValue = entry.Item1.AsProductValue();
var compareValue = (uint)productValue.elements[0].AsU32();
if (compareValue == value)
{
yield return (TestA)entry.Item2;
}
}
}
public static System.Collections.Generic.IEnumerable<TestA> FilterByY(uint value)
{
foreach(var entry in SpacetimeDBClient.clientDB.GetEntries("TestA"))
{
var productValue = entry.Item1.AsProductValue();
var compareValue = (uint)productValue.elements[1].AsU32();
if (compareValue == value)
{
yield return (TestA)entry.Item2;
}
}
}
public static System.Collections.Generic.IEnumerable<TestA> FilterByZ(string value)
{
foreach(var entry in SpacetimeDBClient.clientDB.GetEntries("TestA"))
{
var productValue = entry.Item1.AsProductValue();
var compareValue = (string)productValue.elements[2].AsString();
if (compareValue == value)
{
yield return (TestA)entry.Item2;
}
}
}
public static bool ComparePrimaryKey(SpacetimeDB.SATS.AlgebraicType t, SpacetimeDB.SATS.AlgebraicValue _v1, SpacetimeDB.SATS.AlgebraicValue _v2)
{
return false;
}
public delegate void InsertEventHandler(TestA insertedValue, SpacetimeDB.ReducerEvent dbEvent);
public delegate void DeleteEventHandler(TestA deletedValue, SpacetimeDB.ReducerEvent dbEvent);
public delegate void RowUpdateEventHandler(SpacetimeDBClient.TableOp op, TestA oldValue, TestA newValue, SpacetimeDB.ReducerEvent dbEvent);
public static event InsertEventHandler OnInsert;
public static event DeleteEventHandler OnBeforeDelete;
public static event DeleteEventHandler OnDelete;
public static event RowUpdateEventHandler OnRowUpdate;
public static void OnInsertEvent(object newValue, ClientApi.Event dbEvent)
{
OnInsert?.Invoke((TestA)newValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnBeforeDeleteEvent(object oldValue, ClientApi.Event dbEvent)
{
OnBeforeDelete?.Invoke((TestA)oldValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnDeleteEvent(object oldValue, ClientApi.Event dbEvent)
{
OnDelete?.Invoke((TestA)oldValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnRowUpdateEvent(SpacetimeDBClient.TableOp op, object oldValue, object newValue, ClientApi.Event dbEvent)
{
OnRowUpdate?.Invoke(op, (TestA)oldValue,(TestA)newValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
}
}
'''
"TestB.cs" = '''
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN RUST INSTEAD.
using System;
using System.Collections.Generic;
namespace SpacetimeDB
{
[Newtonsoft.Json.JsonObject(Newtonsoft.Json.MemberSerialization.OptIn)]
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)
{
if (value == null) return null;
var productValue = value.AsProductValue();
return new TestB
{
Foo = productValue.elements[0].AsString(),
};
}
}
}
'''
"TestD.cs" = '''
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN RUST INSTEAD.
using System;
using System.Collections.Generic;
namespace SpacetimeDB
{
[Newtonsoft.Json.JsonObject(Newtonsoft.Json.MemberSerialization.OptIn)]
public partial class TestD : IDatabaseTable
{
[Newtonsoft.Json.JsonProperty("test_c")]
[SpacetimeDB.Some]
public SpacetimeDB.Namespace.Types.TestC TestC;
private static void InternalOnValueInserted(object insertedValue)
{
var val = (TestD)insertedValue;
}
private static void InternalOnValueDeleted(object deletedValue)
{
var val = (TestD)deletedValue;
}
public static SpacetimeDB.SATS.AlgebraicType GetAlgebraicType()
{
return SpacetimeDB.SATS.AlgebraicType.CreateProductType(new SpacetimeDB.SATS.ProductTypeElement[]
{
new SpacetimeDB.SATS.ProductTypeElement("test_c", SpacetimeDB.SATS.AlgebraicType.CreateSumType(new System.Collections.Generic.List<SpacetimeDB.SATS.SumTypeVariant>
{
new SpacetimeDB.SATS.SumTypeVariant("some", SpacetimeDB.Namespace.GetAlgebraicTypeForTestC()),
new SpacetimeDB.SATS.SumTypeVariant("none", SpacetimeDB.SATS.AlgebraicType.CreateProductType(new SpacetimeDB.SATS.ProductTypeElement[]
{
})),
})),
});
}
public static explicit operator TestD(SpacetimeDB.SATS.AlgebraicValue value)
{
if (value == null) return null;
var productValue = value.AsProductValue();
return new TestD
{
TestC = SpacetimeDB.Namespace.IntoTestC(productValue.elements[0].AsSumValue().tag == 1 ? null : productValue.elements[0].AsSumValue().value),
};
}
public static System.Collections.Generic.IEnumerable<TestD> Iter()
{
foreach(var entry in SpacetimeDBClient.clientDB.GetEntries("TestD"))
{
yield return (TestD)entry.Item2;
}
}
public static int Count()
{
return SpacetimeDBClient.clientDB.Count("TestD");
}
public static bool ComparePrimaryKey(SpacetimeDB.SATS.AlgebraicType t, SpacetimeDB.SATS.AlgebraicValue _v1, SpacetimeDB.SATS.AlgebraicValue _v2)
{
return false;
}
public delegate void InsertEventHandler(TestD insertedValue, SpacetimeDB.ReducerEvent dbEvent);
public delegate void DeleteEventHandler(TestD deletedValue, SpacetimeDB.ReducerEvent dbEvent);
public delegate void RowUpdateEventHandler(SpacetimeDBClient.TableOp op, TestD oldValue, TestD newValue, SpacetimeDB.ReducerEvent dbEvent);
public static event InsertEventHandler OnInsert;
public static event DeleteEventHandler OnBeforeDelete;
public static event DeleteEventHandler OnDelete;
public static event RowUpdateEventHandler OnRowUpdate;
public static void OnInsertEvent(object newValue, ClientApi.Event dbEvent)
{
OnInsert?.Invoke((TestD)newValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnBeforeDeleteEvent(object oldValue, ClientApi.Event dbEvent)
{
OnBeforeDelete?.Invoke((TestD)oldValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnDeleteEvent(object oldValue, ClientApi.Event dbEvent)
{
OnDelete?.Invoke((TestD)oldValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnRowUpdateEvent(SpacetimeDBClient.TableOp op, object oldValue, object newValue, ClientApi.Event dbEvent)
{
OnRowUpdate?.Invoke(op, (TestD)oldValue,(TestD)newValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
}
}
'''
"TestE.cs" = '''
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN RUST INSTEAD.
using System;
using System.Collections.Generic;
namespace SpacetimeDB
{
[Newtonsoft.Json.JsonObject(Newtonsoft.Json.MemberSerialization.OptIn)]
public partial class TestE : IDatabaseTable
{
[Newtonsoft.Json.JsonProperty("id")]
public ulong Id;
[Newtonsoft.Json.JsonProperty("name")]
public string Name;
private static Dictionary<ulong, TestE> Id_Index = new Dictionary<ulong, TestE>(16);
private static void InternalOnValueInserted(object insertedValue)
{
var val = (TestE)insertedValue;
Id_Index[val.Id] = val;
}
private static void InternalOnValueDeleted(object deletedValue)
{
var val = (TestE)deletedValue;
Id_Index.Remove(val.Id);
}
public static SpacetimeDB.SATS.AlgebraicType GetAlgebraicType()
{
return SpacetimeDB.SATS.AlgebraicType.CreateProductType(new SpacetimeDB.SATS.ProductTypeElement[]
{
new SpacetimeDB.SATS.ProductTypeElement("id", SpacetimeDB.SATS.AlgebraicType.CreatePrimitiveType(SpacetimeDB.SATS.BuiltinType.Type.U64)),
new SpacetimeDB.SATS.ProductTypeElement("name", SpacetimeDB.SATS.AlgebraicType.CreatePrimitiveType(SpacetimeDB.SATS.BuiltinType.Type.String)),
});
}
public static explicit operator TestE(SpacetimeDB.SATS.AlgebraicValue value)
{
if (value == null) return null;
var productValue = value.AsProductValue();
return new TestE
{
Id = productValue.elements[0].AsU64(),
Name = productValue.elements[1].AsString(),
};
}
public static System.Collections.Generic.IEnumerable<TestE> Iter()
{
foreach(var entry in SpacetimeDBClient.clientDB.GetEntries("TestE"))
{
yield return (TestE)entry.Item2;
}
}
public static int Count()
{
return SpacetimeDBClient.clientDB.Count("TestE");
}
public static TestE FilterById(ulong value)
{
Id_Index.TryGetValue(value, out var r);
return r;
}
public static System.Collections.Generic.IEnumerable<TestE> FilterByName(string value)
{
foreach(var entry in SpacetimeDBClient.clientDB.GetEntries("TestE"))
{
var productValue = entry.Item1.AsProductValue();
var compareValue = (string)productValue.elements[1].AsString();
if (compareValue == value)
{
yield return (TestE)entry.Item2;
}
}
}
public static bool ComparePrimaryKey(SpacetimeDB.SATS.AlgebraicType t, SpacetimeDB.SATS.AlgebraicValue v1, SpacetimeDB.SATS.AlgebraicValue v2)
{
var primaryColumnValue1 = v1.AsProductValue().elements[0];
var primaryColumnValue2 = v2.AsProductValue().elements[0];
return SpacetimeDB.SATS.AlgebraicValue.Compare(t.product.elements[0].algebraicType, primaryColumnValue1, primaryColumnValue2);
}
public static SpacetimeDB.SATS.AlgebraicValue GetPrimaryKeyValue(SpacetimeDB.SATS.AlgebraicValue v)
{
return v.AsProductValue().elements[0];
}
public static SpacetimeDB.SATS.AlgebraicType GetPrimaryKeyType(SpacetimeDB.SATS.AlgebraicType t)
{
return t.product.elements[0].algebraicType;
}
public delegate void InsertEventHandler(TestE insertedValue, SpacetimeDB.ReducerEvent dbEvent);
public delegate void UpdateEventHandler(TestE oldValue, TestE newValue, SpacetimeDB.ReducerEvent dbEvent);
public delegate void DeleteEventHandler(TestE deletedValue, SpacetimeDB.ReducerEvent dbEvent);
public delegate void RowUpdateEventHandler(SpacetimeDBClient.TableOp op, TestE oldValue, TestE newValue, SpacetimeDB.ReducerEvent dbEvent);
public static event InsertEventHandler OnInsert;
public static event UpdateEventHandler OnUpdate;
public static event DeleteEventHandler OnBeforeDelete;
public static event DeleteEventHandler OnDelete;
public static event RowUpdateEventHandler OnRowUpdate;
public static void OnInsertEvent(object newValue, ClientApi.Event dbEvent)
{
OnInsert?.Invoke((TestE)newValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnUpdateEvent(object oldValue, object newValue, ClientApi.Event dbEvent)
{
OnUpdate?.Invoke((TestE)oldValue,(TestE)newValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnBeforeDeleteEvent(object oldValue, ClientApi.Event dbEvent)
{
OnBeforeDelete?.Invoke((TestE)oldValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnDeleteEvent(object oldValue, ClientApi.Event dbEvent)
{
OnDelete?.Invoke((TestE)oldValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnRowUpdateEvent(SpacetimeDBClient.TableOp op, object oldValue, object newValue, ClientApi.Event dbEvent)
{
OnRowUpdate?.Invoke(op, (TestE)oldValue,(TestE)newValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
}
}
'''
"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 delegate void TestHandler(ReducerEvent reducerEvent, SpacetimeDB.TestA arg, SpacetimeDB.TestB arg2, SpacetimeDB.Namespace.Types.TestC arg3);
public static event TestHandler OnTestEvent;
public static void Test(SpacetimeDB.TestA arg, SpacetimeDB.TestB arg2, SpacetimeDB.Namespace.Types.TestC arg3)
{
var _argArray = new object[] {arg, arg2, new SpacetimeDB.EnumWrapper<SpacetimeDB.Namespace.Types.TestC>(arg3)};
var _message = new SpacetimeDBClient.ReducerCallRequest {
fn = "test",
args = _argArray,
};
SpacetimeDBClient.instance.InternalCallReducer(Newtonsoft.Json.JsonConvert.SerializeObject(_message, _settings));
}
[ReducerCallback(FunctionName = "test")]
public static bool OnTest(ClientApi.Event dbEvent)
{
if(OnTestEvent != null)
{
var args = ((ReducerEvent)dbEvent.FunctionCall.CallInfo).TestArgs;
OnTestEvent((ReducerEvent)dbEvent.FunctionCall.CallInfo
,(SpacetimeDB.TestA)args.Arg
,(SpacetimeDB.TestB)args.Arg2
,(SpacetimeDB.Namespace.Types.TestC)args.Arg3
);
return true;
}
return false;
}
[DeserializeEvent(FunctionName = "test")]
public static void TestDeserializeEventArgs(ClientApi.Event dbEvent)
{
var args = new TestArgsStruct();
var bsatnBytes = dbEvent.FunctionCall.ArgBytes;
using var ms = new System.IO.MemoryStream();
ms.SetLength(bsatnBytes.Length);
bsatnBytes.CopyTo(ms.GetBuffer(), 0);
ms.Position = 0;
using var reader = new System.IO.BinaryReader(ms);
var args_0_value = SpacetimeDB.SATS.AlgebraicValue.Deserialize(SpacetimeDB.TestA.GetAlgebraicType(), reader);
args.Arg = (SpacetimeDB.TestA)(args_0_value);
var args_1_value = SpacetimeDB.SATS.AlgebraicValue.Deserialize(SpacetimeDB.TestB.GetAlgebraicType(), reader);
args.Arg2 = (SpacetimeDB.TestB)(args_1_value);
var args_2_value = SpacetimeDB.SATS.AlgebraicValue.Deserialize(SpacetimeDB.Namespace.GetAlgebraicTypeForTestC(), reader);
args.Arg3 = SpacetimeDB.Namespace.IntoTestC(args_2_value);
dbEvent.FunctionCall.CallInfo = new ReducerEvent(ReducerType.Test, "test", dbEvent.Timestamp, Identity.From(dbEvent.CallerIdentity.ToByteArray()), Address.From(dbEvent.CallerAddress.ToByteArray()), dbEvent.Message, dbEvent.Status, args);
}
}
public partial class TestArgsStruct
{
public SpacetimeDB.TestA Arg;
public SpacetimeDB.TestB Arg2;
public SpacetimeDB.Namespace.Types.TestC Arg3;
}
}
'''
"_Private.cs" = '''
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN RUST INSTEAD.
using System;
using System.Collections.Generic;
namespace SpacetimeDB
{
[Newtonsoft.Json.JsonObject(Newtonsoft.Json.MemberSerialization.OptIn)]
public partial class _Private : IDatabaseTable
{
[Newtonsoft.Json.JsonProperty("name")]
public string Name;
private static void InternalOnValueInserted(object insertedValue)
{
var val = (_Private)insertedValue;
}
private static void InternalOnValueDeleted(object deletedValue)
{
var val = (_Private)deletedValue;
}
public static SpacetimeDB.SATS.AlgebraicType GetAlgebraicType()
{
return SpacetimeDB.SATS.AlgebraicType.CreateProductType(new SpacetimeDB.SATS.ProductTypeElement[]
{
new SpacetimeDB.SATS.ProductTypeElement("name", SpacetimeDB.SATS.AlgebraicType.CreatePrimitiveType(SpacetimeDB.SATS.BuiltinType.Type.String)),
});
}
public static explicit operator _Private(SpacetimeDB.SATS.AlgebraicValue value)
{
if (value == null) return null;
var productValue = value.AsProductValue();
return new _Private
{
Name = productValue.elements[0].AsString(),
};
}
public static System.Collections.Generic.IEnumerable<_Private> Iter()
{
foreach(var entry in SpacetimeDBClient.clientDB.GetEntries("_Private"))
{
yield return (_Private)entry.Item2;
}
}
public static int Count()
{
return SpacetimeDBClient.clientDB.Count("_Private");
}
public static System.Collections.Generic.IEnumerable<_Private> FilterByName(string value)
{
foreach(var entry in SpacetimeDBClient.clientDB.GetEntries("_Private"))
{
var productValue = entry.Item1.AsProductValue();
var compareValue = (string)productValue.elements[0].AsString();
if (compareValue == value)
{
yield return (_Private)entry.Item2;
}
}
}
public static bool ComparePrimaryKey(SpacetimeDB.SATS.AlgebraicType t, SpacetimeDB.SATS.AlgebraicValue _v1, SpacetimeDB.SATS.AlgebraicValue _v2)
{
return false;
}
public delegate void InsertEventHandler(_Private insertedValue, SpacetimeDB.ReducerEvent dbEvent);
public delegate void DeleteEventHandler(_Private deletedValue, SpacetimeDB.ReducerEvent dbEvent);
public delegate void RowUpdateEventHandler(SpacetimeDBClient.TableOp op, _Private oldValue, _Private newValue, SpacetimeDB.ReducerEvent dbEvent);
public static event InsertEventHandler OnInsert;
public static event DeleteEventHandler OnBeforeDelete;
public static event DeleteEventHandler OnDelete;
public static event RowUpdateEventHandler OnRowUpdate;
public static void OnInsertEvent(object newValue, ClientApi.Event dbEvent)
{
OnInsert?.Invoke((_Private)newValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnBeforeDeleteEvent(object oldValue, ClientApi.Event dbEvent)
{
OnBeforeDelete?.Invoke((_Private)oldValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnDeleteEvent(object oldValue, ClientApi.Event dbEvent)
{
OnDelete?.Invoke((_Private)oldValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
public static void OnRowUpdateEvent(SpacetimeDBClient.TableOp op, object oldValue, object newValue, ClientApi.Event dbEvent)
{
OnRowUpdate?.Invoke(op, (_Private)oldValue,(_Private)newValue,(ReducerEvent)dbEvent?.FunctionCall.CallInfo);
}
}
}
'''