public static async Task ListFolders(FolderModel root, ItemsController c)
        {
            var folders = await c.GetFolders(root, recursive : true);

            foreach (var folder in folders)
            {
                Console.WriteLine($"{folder.Id}: {folder.FullName}");
            }
        }
        private async Task EnsureInitialized()
        {
            if (_initialized)
            {
                return;
            }

            var folders = await _controller.GetFolders(_root, recursive : true);

            _foldersByPath = folders.ToDictionary(item => item.FullName, item => new FolderModel(item.Id, item.Name, item.Folder));
        }
        /// <remarks>
        /// This is overly optimistic (i.e. expects at least one photo per month),
        /// but is mildly more straightforward than lazily creating folders as we go.
        /// </remarks>
        public async Task CreateFolderForEachMonth(FolderModel root)
        {
            var years = await _controller.GetFolders(root);

            foreach (var year in years)
            {
                Console.WriteLine($"{year.Name}");

                var folder = new FolderModel(year.Id, year.Name, root);
                var months = await _controller.GetFolders(folder);

                var missingMonths = ExpectedMonths.Except(months.Select(m => m.Name));

                foreach (var month in missingMonths)
                {
                    Console.WriteLine($"Creating {folder.FullName}/{month}");
                    await _controller.CreateFolder(month, folder);
                }
            }
        }