public static string AddFolder(DataConfig providerConfig, POCO.SakaiFolder ntfsFolder)
        {
            switch (providerConfig.ProviderType)
            {
            case "azure.tableservice":

                AzureSakaiFolder az = new AzureSakaiFolder(ntfsFolder);

                CloudTable     table     = Utils.GetCloudTable(providerConfig, SakaiResource.AzureTableNames.SakaiFolders);
                TableOperation operation = TableOperation.InsertOrMerge(az);
                Task           tUpdate   = table.ExecuteAsync(operation);
                tUpdate.Wait();

                break;

            case "internal.mongodb":
                IMongoCollection <MongoSakaiFolder> collection = Utils.GetMongoCollection <MongoSakaiFolder>(providerConfig, SakaiResource.MongoTableNames.SakaiFolders);
                MongoSakaiFolder mongoObject = Utils.ConvertType <MongoSakaiFolder>(ntfsFolder);
                collection.InsertOne(mongoObject);
                return(string.Empty);

            default:
                throw new ApplicationException("Data provider not recognised: " + providerConfig.ProviderType);
            }

            //TODO return id of new object if supported
            return(string.Empty);
        }
        public static void UpdateFolder(DataConfig providerConfig, POCO.SakaiFolder ntfsFolder)
        {
            switch (providerConfig.ProviderType)
            {
            case "azure.tableservice":

                AzureSakaiFolder az = new AzureSakaiFolder(ntfsFolder);

                CloudTable     table     = Utils.GetCloudTable(providerConfig, SakaiResource.AzureTableNames.SakaiFolders);
                TableOperation operation = TableOperation.InsertOrMerge(az);
                Task           tUpdate   = table.ExecuteAsync(operation);
                tUpdate.Wait();

                break;

            case "internal.mongodb":
                IMongoCollection <MongoSakaiFolderUpsert> collection = Utils.GetMongoCollection <MongoSakaiFolderUpsert>(providerConfig, SakaiResource.MongoTableNames.SakaiFolders);
                MongoSakaiFolderUpsert mongoObject = Utils.ConvertType <MongoSakaiFolderUpsert>(ntfsFolder);

                // Create the upsert filter
                List <DataFactory.Filter> filters  = new List <DataFactory.Filter>();
                DataFactory.Filter        pkFilter = new DataFactory.Filter("PartitionKey", Utils.CleanTableKey(mongoObject.PartitionKey), "eq");
                DataFactory.Filter        rkFilter = new DataFactory.Filter("RowKey", Utils.CleanTableKey(mongoObject.RowKey), "eq");
                filters.Add(pkFilter);
                filters.Add(rkFilter);
                FilterDefinition <MongoSakaiFolderUpsert> filter = Utils.GenerateMongoFilter <MongoSakaiFolderUpsert>(filters);

                // Create the upsert options
                MongoDB.Driver.ReplaceOptions options = new ReplaceOptions();
                options.IsUpsert = true;

                // Upsert
                collection.ReplaceOne(filter, mongoObject, options);

                return;

            default:
                throw new ApplicationException("Data provider not recognised: " + providerConfig.ProviderType);
            }

            //TODO return id of new object if supported
            return;
        }