mirror of
https://github.com/clockworklabs/SpacetimeDB.git
synced 2026-05-06 07:26:43 -04:00
Move CaseConversionPolicy to public SpacetimeDB namespace (#4382)
Move `CaseConversionPolicy` from `SpacetimeDB.Internal` to the public `SpacetimeDB` namespace so module authors can write: ```csharp [SpacetimeDB.Settings] public const CaseConversionPolicy CASE_CONVERSION_POLICY = CaseConversionPolicy.SnakeCase; ``` instead of the verbose: ```csharp public const SpacetimeDB.Internal.CaseConversionPolicy CASE_CONVERSION_POLICY = SpacetimeDB.Internal.CaseConversionPolicy.SnakeCase; ``` ### Changes - Move enum definition from `SpacetimeDB.Internal` to `SpacetimeDB` namespace in autogen - Fully qualify all `Internal` references to `SpacetimeDB.CaseConversionPolicy` - Codegen source generator accepts both `SpacetimeDB.CaseConversionPolicy` and `SpacetimeDB.Internal.CaseConversionPolicy` for backward compatibility - Updated test fixture and verified snapshots - All 4 codegen tests pass --------- Co-authored-by: clockwork-labs-bot <clockwork-labs-bot@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
3c881f3641
commit
dd2c95f113
@@ -5,10 +5,7 @@ using SpacetimeDB;
|
||||
public static partial class Module
|
||||
{
|
||||
[SpacetimeDB.Settings]
|
||||
public const SpacetimeDB.Internal.CaseConversionPolicy CASE_CONVERSION_POLICY = SpacetimeDB
|
||||
.Internal
|
||||
.CaseConversionPolicy
|
||||
.SnakeCase;
|
||||
public const CaseConversionPolicy CASE_CONVERSION_POLICY = CaseConversionPolicy.SnakeCase;
|
||||
}
|
||||
|
||||
[SpacetimeDB.Type]
|
||||
|
||||
+1
-1
@@ -523,7 +523,7 @@ static class ModuleRegistration
|
||||
new SpacetimeDB.ProcedureContext(identity, connectionId, random, time)
|
||||
);
|
||||
SpacetimeDB.Internal.Module.SetCaseConversionPolicy(
|
||||
SpacetimeDB.Internal.CaseConversionPolicy.SnakeCase
|
||||
SpacetimeDB.CaseConversionPolicy.SnakeCase
|
||||
);
|
||||
SpacetimeDB.Internal.Module.RegisterExplicitTableName("DemoTable", "canonical_table");
|
||||
SpacetimeDB.Internal.Module.RegisterExplicitFunctionName(
|
||||
|
||||
@@ -245,7 +245,7 @@ internal static class ErrorDescriptor
|
||||
group,
|
||||
"[SpacetimeDB.Settings] field must be a const CaseConversionPolicy",
|
||||
field =>
|
||||
$"Settings field {field.Name} must be declared as 'public const SpacetimeDB.Internal.CaseConversionPolicy ...'.",
|
||||
$"Settings field {field.Name} must be declared as 'public const SpacetimeDB.CaseConversionPolicy ...'.",
|
||||
field => field
|
||||
);
|
||||
|
||||
|
||||
@@ -61,7 +61,11 @@ record SettingsDeclaration
|
||||
public readonly string FullName;
|
||||
public readonly string? CaseConversionPolicy;
|
||||
|
||||
private const string CaseConversionPolicyTypeName = "SpacetimeDB.Internal.CaseConversionPolicy";
|
||||
private static readonly string[] CaseConversionPolicyTypeNames =
|
||||
[
|
||||
"SpacetimeDB.CaseConversionPolicy",
|
||||
"SpacetimeDB.Internal.CaseConversionPolicy", // backward compat
|
||||
];
|
||||
|
||||
public SettingsDeclaration(GeneratorAttributeSyntaxContext context, DiagReporter diag)
|
||||
{
|
||||
@@ -73,7 +77,7 @@ record SettingsDeclaration
|
||||
diag.Report(ErrorDescriptor.SettingsMustBeConstCaseConversionPolicy, fieldSymbol);
|
||||
return;
|
||||
}
|
||||
if (fieldSymbol.Type.ToString() != CaseConversionPolicyTypeName)
|
||||
if (!CaseConversionPolicyTypeNames.Contains(fieldSymbol.Type.ToString()))
|
||||
{
|
||||
diag.Report(ErrorDescriptor.SettingsMustBeConstCaseConversionPolicy, fieldSymbol);
|
||||
return;
|
||||
@@ -1981,7 +1985,7 @@ public class Module : IIncrementalGenerator
|
||||
var settingsRegistration =
|
||||
settings.Array.Length == 1
|
||||
&& settings.Array[0].CaseConversionPolicy is { } policyName
|
||||
? $"SpacetimeDB.Internal.Module.SetCaseConversionPolicy(SpacetimeDB.Internal.CaseConversionPolicy.{policyName});"
|
||||
? $"SpacetimeDB.Internal.Module.SetCaseConversionPolicy(SpacetimeDB.CaseConversionPolicy.{policyName});"
|
||||
: string.Empty;
|
||||
|
||||
var explicitTableRegistrations = string.Join(
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
using System;
|
||||
|
||||
namespace SpacetimeDB.Internal
|
||||
namespace SpacetimeDB
|
||||
{
|
||||
[SpacetimeDB.Type]
|
||||
public enum CaseConversionPolicy
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ namespace SpacetimeDB.Internal
|
||||
System.Collections.Generic.List<RawScheduleDefV10> Schedules,
|
||||
System.Collections.Generic.List<RawLifeCycleReducerDefV10> LifeCycleReducers,
|
||||
System.Collections.Generic.List<RawRowLevelSecurityDefV9> RowLevelSecurity,
|
||||
CaseConversionPolicy CaseConversionPolicy,
|
||||
SpacetimeDB.CaseConversionPolicy CaseConversionPolicy,
|
||||
ExplicitNames ExplicitNames
|
||||
)>;
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ partial class RawModuleDefV10
|
||||
private readonly Dictionary<string, List<RawColumnDefaultValueV10>> defaultValuesByTable =
|
||||
new(StringComparer.Ordinal);
|
||||
|
||||
private CaseConversionPolicy? caseConversionPolicy = null;
|
||||
private SpacetimeDB.CaseConversionPolicy? caseConversionPolicy = null;
|
||||
private readonly List<ExplicitNameEntry> explicitNames = [];
|
||||
|
||||
// Note: this intends to generate a valid identifier, but it's not guaranteed to be unique as it's not proper mangling.
|
||||
@@ -89,7 +89,7 @@ partial class RawModuleDefV10
|
||||
defaults.Add(new RawColumnDefaultValueV10(colId, new List<byte>(value)));
|
||||
}
|
||||
|
||||
internal void SetCaseConversionPolicy(CaseConversionPolicy policy) =>
|
||||
internal void SetCaseConversionPolicy(SpacetimeDB.CaseConversionPolicy policy) =>
|
||||
caseConversionPolicy = policy;
|
||||
|
||||
internal void RegisterExplicitTableName(string sourceName, string canonicalName) =>
|
||||
@@ -332,7 +332,7 @@ public static class Module
|
||||
public static void RegisterTableDefaultValue(string table, ushort colId, byte[] value) =>
|
||||
moduleDef.RegisterTableDefaultValue(table, colId, value);
|
||||
|
||||
public static void SetCaseConversionPolicy(CaseConversionPolicy policy) =>
|
||||
public static void SetCaseConversionPolicy(SpacetimeDB.CaseConversionPolicy policy) =>
|
||||
moduleDef.SetCaseConversionPolicy(policy);
|
||||
|
||||
public static void RegisterExplicitTableName(string sourceName, string canonicalName) =>
|
||||
|
||||
@@ -54,6 +54,23 @@ fn main() -> anyhow::Result<()> {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
// CaseConversionPolicy is part of the public API — move it to
|
||||
// the SpacetimeDB namespace so users don't have to write
|
||||
// SpacetimeDB.Internal.CaseConversionPolicy.
|
||||
let code = if filename == "CaseConversionPolicy.g.cs" {
|
||||
regex_replace!(&code, r"namespace SpacetimeDB\.Internal", "namespace SpacetimeDB")
|
||||
} else {
|
||||
// In other autogen files, qualify the type name in type position
|
||||
// (before a space+identifier) so it resolves after the namespace move.
|
||||
// The pattern "CaseConversionPolicy CaseConversionPolicy" becomes
|
||||
// "SpacetimeDB.CaseConversionPolicy CaseConversionPolicy".
|
||||
regex_replace!(
|
||||
&code,
|
||||
r"\bCaseConversionPolicy(\s+)CaseConversionPolicy\b",
|
||||
"SpacetimeDB.CaseConversionPolicy${1}CaseConversionPolicy"
|
||||
)
|
||||
};
|
||||
|
||||
let code = regex_replace!(&code, r"\bAlgebraicType\b", "SpacetimeDB.BSATN.$0");
|
||||
let code = regex_replace!(
|
||||
&code,
|
||||
|
||||
Reference in New Issue
Block a user