public FileSystemRepository(DirectoryInfo folder, FileSystemShardingStrategy sharding, IBuildStuff builder) { _sharding = sharding; _directory = folder; _builder = builder; _fileCache = new Dictionary<string, FileInfo>(); }
public FileSystemAccount(string directoryPath, FileSystemFactory factory, FileSystemShardingStrategy defaultStrategy ) { _factory = factory; _defaultStrategy = defaultStrategy; _directory = new DirectoryInfo(directoryPath); if (!_directory.Exists) _directory.Create(); }
public FileSystemRepository OperOrCreate(DirectoryInfo directory, FileSystemShardingStrategy defaultShardingStrategy) { var sharding = defaultShardingStrategy; var files = directory.GetFiles().ToList(); var dataFiles = files.Where(f => !f.Name.StartsWith(Sharding)).ToList(); if (!files.Any()) { var id = GetId(sharding); var path = Path.Combine(directory.FullName, Sharding + id); using (new FileInfo(path).Create()) ; } else { var factory = files.Single(f => f.Name.StartsWith(Sharding)).Name; int spearatorIndex = factory.IndexOf('-'); var id = factory.Substring(spearatorIndex + 1); sharding = BuildShardingStrategy(id); } return new FileSystemRepository(directory, sharding, _builder); }