fix(site-runtime): resolve SiteRuntime-004..011 — deploy-after-persist, remove reflection, deterministic IDs, non-blocking startup, dedicated script scheduler, config-change detection, semantic trust-model check
This commit is contained in:
@@ -178,13 +178,12 @@ public class SiteNotificationRepository : INotificationRepository
|
||||
|
||||
// ── Private helpers ──
|
||||
|
||||
private SqliteConnection CreateConnection()
|
||||
{
|
||||
var field = typeof(SiteStorageService).GetField("_connectionString",
|
||||
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
|
||||
var connectionString = (string)field!.GetValue(_storage)!;
|
||||
return new SqliteConnection(connectionString);
|
||||
}
|
||||
/// <summary>
|
||||
/// Creates a new SQLite connection against the site database via
|
||||
/// <see cref="SiteStorageService.CreateConnection"/> (SiteRuntime-006) instead of
|
||||
/// reaching into its private connection-string field via reflection.
|
||||
/// </summary>
|
||||
private SqliteConnection CreateConnection() => _storage.CreateConnection();
|
||||
|
||||
private static NotificationList MapNotificationList(SqliteDataReader reader)
|
||||
{
|
||||
@@ -246,10 +245,9 @@ public class SiteNotificationRepository : INotificationRepository
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Generates a stable positive integer ID from a string name.
|
||||
/// Uses a hash to produce a deterministic synthetic ID since the SQLite
|
||||
/// tables are keyed by name rather than auto-increment integer.
|
||||
/// Generates a stable positive integer ID from a string name (SiteRuntime-007).
|
||||
/// Uses a deterministic FNV-1a hash rather than <see cref="string.GetHashCode()"/>,
|
||||
/// which is randomized per process on .NET Core and would change every restart.
|
||||
/// </summary>
|
||||
private static int GenerateSyntheticId(string name)
|
||||
=> name.GetHashCode() & 0x7FFFFFFF;
|
||||
private static int GenerateSyntheticId(string name) => SyntheticId.From(name);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user