namespace Bit.Seeder.Migration.Databases;
///
/// Interface for database importers that migrate data from SQL Server to various database systems.
///
public interface IDatabaseImporter : IDisposable
{
///
/// Establishes a connection to the target database.
///
/// True if connection was successful, false otherwise.
bool Connect();
///
/// Closes the connection to the target database.
///
void Disconnect();
///
/// Creates a table in the target database from a schema definition.
///
/// Name of the table to create.
/// List of column names.
/// Dictionary mapping column names to their SQL Server data types.
/// Optional list of columns that require special handling (e.g., JSON columns).
/// True if table was created successfully, false otherwise.
bool CreateTableFromSchema(
string tableName,
List columns,
Dictionary columnTypes,
List? specialColumns = null);
///
/// Retrieves the list of column names for a table.
///
/// Name of the table.
/// List of column names.
List GetTableColumns(string tableName);
///
/// Imports data into a table.
///
/// Name of the target table.
/// List of column names in the data.
/// Data rows to import.
/// Number of rows to import per batch.
/// True if import was successful, false otherwise.
bool ImportData(
string tableName,
List columns,
List