public static ColumnFamilyStorageRocksDbWrapper Create(string path, IEnumerable <string> partitionsList) { Preconditions.CheckNonWhiteSpace(path, nameof(path)); string dbPath = Path.Combine(path, DbFolderName); string columnFamiliesFilePath = Path.Combine(path, ColumnFamiliesFileName); var columnFamiliesProvider = new ColumnFamiliesProvider(columnFamiliesFilePath); lock (ColumnFamiliesLock) { IEnumerable <string> existingColumnFamilies = columnFamiliesProvider.ListColumnFamilies(); IEnumerable <string> columnFamiliesList = existingColumnFamilies.Union(Preconditions.CheckNotNull(partitionsList, nameof(partitionsList)), StringComparer.OrdinalIgnoreCase).ToList(); var columnFamilies = new ColumnFamilies(); foreach (string columnFamilyName in columnFamiliesList) { columnFamilies.Add(columnFamilyName, new ColumnFamilyOptions()); } columnFamiliesProvider.SetColumnFamilies(columnFamiliesList); RocksDb db = RocksDb.Open(Options, dbPath, columnFamilies); var rocksDbWrapper = new ColumnFamilyStorageRocksDbWrapper(db, columnFamiliesProvider); return(rocksDbWrapper); } }
ColumnFamilyStorageRocksDbWrapper(RocksDb db, ColumnFamiliesProvider columnFamiliesProvider) { this.db = db; this.columnFamiliesProvider = columnFamiliesProvider; }