NetMud.DataAccess.FileSystem.PlayerData.LoadAllCharactersForAccountToCache C# (CSharp) Method

LoadAllCharactersForAccountToCache() public method

Dumps everything of a single type into the cache from the filesystem for BackingData
public LoadAllCharactersForAccountToCache ( string accountHandle ) : bool
accountHandle string
return bool
        public bool LoadAllCharactersForAccountToCache(string accountHandle)
        {
            var currentBackupDirectory = BaseDirectory + accountHandle + "/" + CurrentDirectoryName;

            //No current directory? WTF
            if (!VerifyDirectory(currentBackupDirectory, false))
                return false;

            var charDirectory = new DirectoryInfo(currentBackupDirectory);

            foreach (var file in charDirectory.EnumerateFiles("*.character", SearchOption.AllDirectories))
            {
                try
                {
                    var fileData = ReadFile(file);
                    var blankEntity = Activator.CreateInstance("NetMud.Data", "NetMud.Data.EntityBackingData.Character");

                    var objRef = blankEntity.Unwrap() as ICharacter;

                    var newChar = objRef.FromBytes(fileData) as ICharacter;

                    PlayerDataCache.Add(newChar);
                }
                catch (Exception ex)
                {
                    LoggingUtility.LogError(ex);
                    //Let it keep going
                }
            }

            return true;
        }

Usage Example

        private static IEnumerable<ICharacter> EnsureAccountCharacters(string accountHandle)
        {
            //No shenanigans
            if(String.IsNullOrWhiteSpace(accountHandle))
                return Enumerable.Empty<ICharacter>();

            var chars = BackingCache.GetAll<ICharacter>().Where(ch => ch.AccountHandle.Equals(accountHandle, StringComparison.InvariantCultureIgnoreCase));

            if(!chars.Any())
            {
                var pData = new PlayerData();

                pData.LoadAllCharactersForAccountToCache(accountHandle);
            }

            return chars;
        }