using SyncEngine.Metadata;
namespace SyncEngine.Logging
{
public sealed class SyncStatistics
{
public int TablesExcluded { get; set; }
public int TablesDiscovered { get; set; }
public int TablesCreated { get; set; }
public int TablesUnchanged { get; set; }
public int TablesSchemaUpdated { get; set; }
public int TablesIdentityRebuilt { get; set; }
public int ColumnsAdded { get; set; }
public int ForeignKeysCreated { get; set; }
public int ForeignKeysSkipped { get; set; }
public int PrimaryKeysCreated { get; set; }
public int PrimaryKeysUnchanged { get; set; }
public int PrimaryKeysSkipped { get; set; }
public int IndexesCreated { get; set; }
public int IndexesUnchanged { get; set; }
public int IndexesSkipped { get; set; }
public int DefaultsCreated { get; set; }
public int DefaultsUnchanged { get; set; }
public int DefaultsSkipped { get; set; }
public int NullabilityTightened { get; set; }
public int NullabilitySkipped { get; set; }
public int CheckConstraintsCreated { get; set; }
public int CheckConstraintsSkipped { get; set; }
public int ViewsCreated { get; set; }
public int ViewsUpdated { get; set; }
public int ViewsSkipped { get; set; }
public int TablesProcessed { get; set; }
public int TablesSkipped { get; set; }
public int RowsInserted { get; set; }
public int RowsUpdated { get; set; }
public int RowsSoftDeleted { get; set; }
public int ProductsUpserted { get; set; }
public int ProductsWithdrawn { get; set; }
/// Active source rows with a non-blank code that were upsert-checked.
public int ProductsProcessed { get; set; }
/// Existing MySQL rows with no synced field changes (no write).
public int ProductsUnchanged { get; set; }
/// Source rows skipped due to blank strCode.
public int ProductsSkippedBlankCode { get; set; }
public string FormatMySqlLegSummary()
{
return string.Format(
"processed={0} upserted={1} unchanged={2} skipped_blank={3} withdrawn={4}",
ProductsProcessed,
ProductsUpserted,
ProductsUnchanged,
ProductsSkippedBlankCode,
ProductsWithdrawn);
}
public SyncRunStats ToRunStats()
{
return new SyncRunStats
{
TablesProcessed = TablesProcessed,
TablesSkipped = TablesSkipped,
RowsInserted = RowsInserted,
RowsUpdated = RowsUpdated,
RowsSoftDeleted = RowsSoftDeleted
};
}
public string FormatAccessSqlSummary(bool schemaOnly)
{
var schema = string.Format(
"Schema: discovered={0} created={1} unchanged={2} schemaUpdated={3} identityRebuilt={4} columnsAdded={5} " +
"pksCreated={6} pksUnchanged={7} pksSkipped={8} indexesCreated={9} indexesUnchanged={10} indexesSkipped={11} " +
"defaultsCreated={12} defaultsUnchanged={13} defaultsSkipped={14} nullTightened={15} nullSkipped={16} " +
"checksCreated={17} checksSkipped={18} fksCreated={19} fksSkipped={20} " +
"viewsCreated={21} viewsUpdated={22} viewsSkipped={23}",
TablesDiscovered,
TablesCreated,
TablesUnchanged,
TablesSchemaUpdated,
TablesIdentityRebuilt,
ColumnsAdded,
PrimaryKeysCreated,
PrimaryKeysUnchanged,
PrimaryKeysSkipped,
IndexesCreated,
IndexesUnchanged,
IndexesSkipped,
DefaultsCreated,
DefaultsUnchanged,
DefaultsSkipped,
NullabilityTightened,
NullabilitySkipped,
CheckConstraintsCreated,
CheckConstraintsSkipped,
ForeignKeysCreated,
ForeignKeysSkipped,
ViewsCreated,
ViewsUpdated,
ViewsSkipped);
if (schemaOnly)
{
return schema;
}
return schema + string.Format(
" | Data: tablesSynced={0} rowsInserted={1} rowsUpdated={2} rowsSoftDeleted={3}",
TablesProcessed,
RowsInserted,
RowsUpdated,
RowsSoftDeleted);
}
}
}