Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CoreSync
Submodule CoreSync updated 49 files
+16 −2 .github/workflows/build-and-publish.yml
+34 −5 README.md
+4 −3 docs/comparison-with-datasync-toolkit.md
+3 −2 docs/comparison-with-debezium.md
+1 −1 docs/index.md
+55 −9 src/CoreSync.Http.Client/Implementation/SyncProviderHttpClient.cs
+42 −0 src/CoreSync.Http.Server/WebApplicationExtensions.cs
+30 −0 src/CoreSync.Http/SyncAnchorTooOldError.cs
+23 −0 src/CoreSync.Http/SyncHttpErrorCodes.cs
+7 −0 src/CoreSync.Http/SyncHttpHeaders.cs
+40 −0 src/CoreSync.MySql/CoreSync.MySql.csproj
+26 −0 src/CoreSync.MySql/MySqlColumn.cs
+21 −0 src/CoreSync.MySql/MySqlCommandExtensions.cs
+9 −0 src/CoreSync.MySql/MySqlPrimaryColumnType.cs
+18 −0 src/CoreSync.MySql/MySqlSyncConfiguration.cs
+118 −0 src/CoreSync.MySql/MySqlSyncConfigurationBuilder.cs
+12 −0 src/CoreSync.MySql/MySqlSyncItem.cs
+943 −0 src/CoreSync.MySql/MySqlSyncProvider.cs
+145 −0 src/CoreSync.MySql/MySqlSyncTable.cs
+10 −2 src/CoreSync.PostgreSQL/PostgreSQLSyncProvider.cs
+13 −2 src/CoreSync.SqlServer/SqlSyncProvider.cs
+28 −0 src/CoreSync.SqlServerCT/ChangeRetentionUnit.cs
+39 −0 src/CoreSync.SqlServerCT/ChangeTrackingDatabaseOptions.cs
+56 −2 src/CoreSync.SqlServerCT/SqlConnectionExtensions.cs
+272 −32 src/CoreSync.SqlServerCT/SqlServerCTProvider.cs
+52 −4 src/CoreSync.SqlServerCT/SqlServerCTSyncConfiguration.cs
+40 −3 src/CoreSync.SqlServerCT/SqlServerCTSyncConfigurationBuilder.cs
+12 −21 src/CoreSync.SqlServerCT/SqlServerCTSyncTable.cs
+190 −56 src/CoreSync.Sqlite/SqliteSyncProvider.cs
+19 −51 src/CoreSync.Sqlite/SqliteSyncTable.cs
+308 −0 src/CoreSync.Tests/AnchorTooOldTests.cs
+323 −0 src/CoreSync.Tests/BulkApplyTests.cs
+5 −2 src/CoreSync.Tests/CoreSync.Tests.csproj
+3 −1 src/CoreSync.Tests/Data/DatabaseType.cs
+12 −0 src/CoreSync.Tests/Data/DesignTimeMySqlBlogDbContextFactory.cs
+58 −0 src/CoreSync.Tests/Data/MySqlBlogDbContext.cs
+598 −1 src/CoreSync.Tests/IntegrationTests.Definitions.cs
+261 −0 src/CoreSync.Tests/IntegrationTests.Http.cs
+13 −0 src/CoreSync.Tests/IntegrationTests.cs
+156 −0 src/CoreSync.Tests/Migrations/MySqlMigrations/20260707093016_InitialCreate.Designer.cs
+128 −0 src/CoreSync.Tests/Migrations/MySqlMigrations/20260707093016_InitialCreate.cs
+153 −0 src/CoreSync.Tests/Migrations/MySqlMigrations/MySqlBlogDbContextModelSnapshot.cs
+251 −0 src/CoreSync.Tests/SelfReferencingForeignKeyTests.Definitions.cs
+424 −0 src/CoreSync.Tests/SqlServerCTResilienceTests.cs
+147 −0 src/CoreSync.Tests/SqliteRemoveProvisionTests.cs
+6 −0 src/CoreSync.Tests/SyncTestServer.cs
+14 −0 src/CoreSync.sln
+23 −1 src/CoreSync/SyncAgent.cs
+112 −0 src/CoreSync/SyncAnchorTooOldException.cs
18 changes: 18 additions & 0 deletions src/Data/DataStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,11 +59,29 @@ public class SqliteDataStore : DataStore

public class SqlServerDataStore : DataStore
{
/// <summary>
/// The default number of days SQL Server Change Tracking keeps change history for.
/// </summary>
/// <remarks>
/// A client that stays offline longer than this window cannot resume an incremental sync and has
/// to be reinitialized from a fresh snapshot, so the window has to comfortably cover how long a
/// device is expected to go without connectivity. Longer retention grows the change tracking side
/// tables, which is the cost being traded against here.
/// </remarks>
public const int DefaultChangeRetentionDays = 30;

public required string ConnectionString { get; set; }

public string GetResolvedConnectionString() => ResolveConnectionString(ConnectionString);

public SqlServerDataStoreTrackingMode TrackingMode { get; set; }

/// <summary>
/// How many days of change history to retain, applied when
/// <see cref="TrackingMode"/> is <see cref="SqlServerDataStoreTrackingMode.ChangeTracking"/>.
/// Ignored for the trigger-based tracking mode, which keeps its own journal.
/// </summary>
public int ChangeRetentionDays { get; set; } = DefaultChangeRetentionDays;
}

public class PostgreSqlDataStore : DataStore
Expand Down
Loading
Loading