public override void Configure(IKernel kernel) { // this relies on specific Area binding order, as set in Bootstrapper. // todo: remove once current persistence is deprecated. kernel.Bind <PersistenceManager>().ToMethod(context => { var dataDir = kernel.Get <IWurmAssistantDataDirectory>(); var logger = kernel.Get <ILogger>(); var config = new PersistenceManagerConfig() { DataStoreDirectoryPath = Path.Combine(dataDir.DirectoryPath, "Data") }; var errorStrategy = new JsonExtendedErrorHandlingStrategy(logger); var serializationStrategy = new JsonSerializationStrategy { ErrorStrategy = errorStrategy }; var persistenceManager = new PersistenceManager(config, serializationStrategy, new FlatFilesPersistenceStrategy(config)); return(persistenceManager); }).InSingletonScope(); kernel.Bind <PersistenceEnabler>().ToSelf().InSingletonScope(); kernel.Bind <IPersistentObjectResolver>().To <PersistentObjectResolver>().InSingletonScope(); kernel.Bind(typeof(IPersistentObjectResolver <>)).To(typeof(PersistentObjectResolver <>)).InSingletonScope(); kernel.Bind <ISerializer>().To <DefaultJsonSerializer>(); }
void ImportFromObsoleteFlatFiles(PersistenceManagerConfig config) { var logFilePath = Path.Combine(config.DataStoreDirectoryPath, "migration.log"); var allObjects = new FlatFilesDataImporter(config).GetAllObjects().ToList(); if (allObjects.Any()) { if (!File.Exists(logFilePath)) { foreach (var dataObject in allObjects) { Save(dataObject.CollectionId, dataObject.Key, dataObject.Content); } File.WriteAllText(logFilePath, $"{DateTime.Now} : migrated data from flat files to sqlite"); } foreach (var directory in new DirectoryInfo(config.DataStoreDirectoryPath).GetDirectories()) { directory.Delete(recursive: true); } var mapFile = Path.Combine(config.DataStoreDirectoryPath, "data.map"); if (File.Exists(mapFile)) { File.Delete(mapFile); } } }
public FlatFilesDataImporter([NotNull] PersistenceManagerConfig config) { if (config == null) { throw new ArgumentNullException(nameof(config)); } dataMap = new DataMap(config.DataStoreDirectoryPath); }
public FlatFilesPersistenceStrategy([NotNull] PersistenceManagerConfig config) { if (config == null) { throw new ArgumentNullException("config"); } dataMap = new DataMap(config.DataStoreDirectoryPath); }
PersistenceManager CreatePersistenceManager(JsonSerializationStrategy ss = null) { if (ss == null) { ss = new JsonSerializationStrategy(); } var cfg = new PersistenceManagerConfig() { DataStoreDirectoryPath = TempDir.FullName }; var m = new PersistenceManager(cfg, ss, new FlatFilesPersistenceStrategy(cfg)); return(m); }
public SqlitePersistenceStrategy([NotNull] PersistenceManagerConfig persistenceManagerConfig) { if (persistenceManagerConfig == null) { throw new ArgumentNullException(nameof(persistenceManagerConfig)); } string rootPath = persistenceManagerConfig.DataStoreDirectoryPath; if (!Directory.Exists(rootPath)) { Directory.CreateDirectory(rootPath); } databasePath = Path.Combine(rootPath, "database.sqlite"); UpdateSchema(); ImportFromObsoleteFlatFiles(persistenceManagerConfig); }