public SQLiteConnection GetSQLiteConnection()
{
if (sqliteConnection == null || sqliteConnection.State == System.Data.ConnectionState.Broken)
{
try
{
Logger.Info(String.Format("Checking whether database {0} exists", databaseFileName));
bool createDatabase = !File.Exists(databaseFileName);
sqliteConnection = new SQLiteConnection("Data Source=" + databaseFileName + ";PRAGMA journal_mode=WAL;");
sqliteConnection.Open();
if (createDatabase)
{
string command =
@"CREATE TABLE files (
path TEXT PRIMARY KEY,
serverSideModificationDate DATE,
metadata TEXT,
checksum TEXT); /* Checksum of both data and metadata */
CREATE TABLE folders (
path TEXT PRIMARY KEY,
serverSideModificationDate DATE,
metadata TEXT,
checksum TEXT); /* Checksum of metadata */
CREATE TABLE general (
key TEXT PRIMARY KEY,
value TEXT);"; /* Other data such as ChangeLog token */
ExecuteSQLAction(command, null);
Logger.Info("Database created");
}
}
catch (Exception e)
{
Logger.Error("Error creating database: " + e.Message, e);
throw;
}
}
return sqliteConnection;
}