using System.Diagnostics.Contracts;
using System.IO;
using System.Linq;
+using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Castle.ActiveRecord;
if (!File.Exists(Path.Combine(_pithosDataPath ,"pithos.db")))
ActiveRecordStarter.CreateSchema();
- }
+ CreateTrigger();
+
+ }
+
+ private void CreateTrigger()
+ {
+ using (var connection = GetConnection())
+ using (var triggerCommand = connection.CreateCommand())
+ {
+ var cmdText = new StringBuilder()
+ .AppendLine("CREATE TRIGGER IF NOT EXISTS update_last_modified UPDATE ON FileState FOR EACH ROW")
+ .AppendLine("BEGIN")
+ .AppendLine("UPDATE FileState SET Modified=datetime('now') WHERE Id=old.Id;")
+ .AppendLine("END;")
+ .AppendLine("CREATE TRIGGER IF NOT EXISTS insert_last_modified INSERT ON FileState FOR EACH ROW")
+ .AppendLine("BEGIN")
+ .AppendLine("UPDATE FileState SET Modified=datetime('now') WHERE Id=new.Id;")
+ .AppendLine("END;")
+ .ToString();
+ triggerCommand.CommandText = cmdText;
+ triggerCommand.ExecuteNonQuery();
+ }
+ }
private static InPlaceConfigurationSource GetConfiguration(string pithosDbPath)
var command = new SQLiteCommand("select FileStatus from FileState where FilePath=:path COLLATE NOCASE", connection);
command.Parameters.AddWithValue("path", path);
- var s = command.ExecuteScalar();
- return (FileStatus)Convert.ToInt32(s);
+ var statusValue = command.ExecuteScalar();
+ if (statusValue==null)
+ return FileStatus.Missing;
+ return (FileStatus)Convert.ToInt32(statusValue);
}
}