Quellcode durchsuchen

解决blob容器大小计算

CrazyIter_Bin vor 4 Jahren
Ursprung
Commit
ce4b8d1473
1 geänderte Dateien mit 19 neuen und 16 gelöschten Zeilen
  1. 19 16
      TEAMModelOS/Controllers/Core/BlobController.cs

+ 19 - 16
TEAMModelOS/Controllers/Core/BlobController.cs

@@ -532,17 +532,20 @@ namespace TEAMModelOS.Controllers.Core
                 request.TryGetProperty("scope", out JsonElement scope);
                 request.TryGetProperty("periodId", out JsonElement periodId);
                 var client = _azureCosmos.GetCosmosClient();
-                var queryslt = $"SELECT  value(c) FROM c join A1 in  c.periodId  WHERE c.type='{type}' and  A1 in ('{periodId}')";
+              
                 if (scope.GetString().Equals("school"))
                 {
-                    await foreach (var item in client.GetContainer("TEAMModelOS", "School").GetItemQueryIterator<Bloblog>(queryText: queryslt, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Bloblog-{name}") }))
+                    var queryslt = new StringBuilder($"SELECT  value(c) FROM c join A1 in  c.periodId  WHERE c.type='{type}' and  A1 in ('{periodId}') ");
+                     
+                    await foreach (var item in client.GetContainer("TEAMModelOS", "School").GetItemQueryIterator<Bloblog>(queryText: queryslt.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Bloblog-{name}") }))
                     {
                         bloblogs.Add(item);
                     }
                 }
-                else if (scope.GetString().Equals("teacher"))
+                else if (scope.GetString().Equals("private"))
                 {
-                    await foreach (var item in client.GetContainer("TEAMModelOS", "Teacher").GetItemQueryIterator<Bloblog>(queryText: queryslt, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Bloblog-{name}") }))
+                    var queryslt = new StringBuilder($"SELECT  value(c) FROM c   WHERE c.type='{type}'  ");
+                    await foreach (var item in client.GetContainer("TEAMModelOS", "Teacher").GetItemQueryIterator<Bloblog>(queryText: queryslt.ToString(), requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Bloblog-{name}") }))
                     {
                         bloblogs.Add(item);
                     }
@@ -614,21 +617,21 @@ namespace TEAMModelOS.Controllers.Core
                             {
                                 item.time = now;
                                 item.size = size != null && size.HasValue ? size.Value : 0;
-                                item.periodId = periodId.ValueKind.Equals(JsonValueKind.Array) ? periodId.ToObject<List<string>>() : new List<string> { "" };
-                                item.subjectId = subjectId.ValueKind.Equals(JsonValueKind.Array) ? subjectId.ToObject<List<string>>() : new List<string> { "" };
-                                item.gradeId = gradeId.ValueKind.Equals(JsonValueKind.Array) ? gradeId.ToObject<List<string>>() : new List<string> { "" };
+                                item.periodId = periodId.ValueKind.Equals(JsonValueKind.Array) && periodId.ToObject<List<string>>().IsNotEmpty() ? periodId.ToObject<List<string>>() : new List<string> { "" };
+                                item.subjectId = subjectId.ValueKind.Equals(JsonValueKind.Array) && subjectId.ToObject<List<string>>().IsNotEmpty() ? subjectId.ToObject<List<string>>() : new List<string> { "" };
+                                item.gradeId = gradeId.ValueKind.Equals(JsonValueKind.Array) && gradeId.ToObject<List<string>>().IsNotEmpty() ? gradeId.ToObject<List<string>>() : new List<string> { "" };
                                 await client.GetContainer("TEAMModelOS", "School").ReplaceItemAsync<Bloblog>(item, item.id, new Azure.Cosmos.PartitionKey(item.code));
                                 exsit = true;
                             }
                         }
-                        else if (scope.GetString().Equals("teacher")) {
+                        else if (scope.GetString().Equals("private")) {
                             await foreach (var item in client.GetContainer("TEAMModelOS", "Teacher").GetItemQueryIterator<Bloblog>(queryText: queryslt, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Bloblog-{name}") }))
                             {
                                 item.time = now;
                                 item.size = size != null && size.HasValue ? size.Value : 0;
-                                item.periodId = periodId.ValueKind.Equals(JsonValueKind.Array) ? periodId.ToObject<List<string>>() : new List<string> { "" };
-                                item.subjectId = subjectId.ValueKind.Equals(JsonValueKind.Array) ? subjectId.ToObject<List<string>>() : new List<string> { "" };
-                                item.gradeId = gradeId.ValueKind.Equals(JsonValueKind.Array) ? gradeId.ToObject<List<string>>() : new List<string> { "" };
+                                item.periodId = periodId.ValueKind.Equals(JsonValueKind.Array) && periodId.ToObject<List<string>>().IsNotEmpty() ? periodId.ToObject<List<string>>() : new List<string> { "" };
+                                item.subjectId = subjectId.ValueKind.Equals(JsonValueKind.Array) && subjectId.ToObject<List<string>>().IsNotEmpty() ? subjectId.ToObject<List<string>>() : new List<string> { "" };
+                                item.gradeId = gradeId.ValueKind.Equals(JsonValueKind.Array) && gradeId.ToObject<List<string>>().IsNotEmpty() ? gradeId.ToObject<List<string>>() : new List<string> { "" };
                                 await client.GetContainer("TEAMModelOS", "Teacher").ReplaceItemAsync<Bloblog>(item, item.id, new Azure.Cosmos.PartitionKey(item.code));
                                 exsit = true;
                             }
@@ -645,16 +648,16 @@ namespace TEAMModelOS.Controllers.Core
                             url = url,
                             time = now,
                             size = size != null && size.HasValue ? size.Value : 0,
-                            periodId = periodId.ValueKind.Equals(JsonValueKind.Array) ? periodId.ToObject<List<string>>() : new List<string> { "" } ,
-                            subjectId= subjectId.ValueKind.Equals(JsonValueKind.Array) ? subjectId.ToObject<List<string>>() : new List<string> { ""},
-                            gradeId = gradeId.ValueKind.Equals(JsonValueKind.Array) ? gradeId.ToObject<List<string>>() : new List<string> { "" },
+                            periodId = periodId.ValueKind.Equals(JsonValueKind.Array) && periodId.ToObject<List<string>>().IsNotEmpty() ? periodId.ToObject<List<string>>() : new List<string> { "" } ,
+                            subjectId= subjectId.ValueKind.Equals(JsonValueKind.Array)&& subjectId.ToObject<List<string>>() .IsNotEmpty()? subjectId.ToObject<List<string>>() : new List<string> { ""},
+                            gradeId = gradeId.ValueKind.Equals(JsonValueKind.Array) && gradeId.ToObject<List<string>>().IsNotEmpty() ? gradeId.ToObject<List<string>>() : new List<string> { "" },
                             type = u
                         };
                         if (scope.GetString().Equals("school"))
                         {
                             await client.GetContainer("TEAMModelOS", "School").CreateItemAsync(blob, new Azure.Cosmos.PartitionKey(blob.code));
                         }
-                        else if (scope.GetString().Equals("teacher"))
+                        else if (scope.GetString().Equals("private"))
                         {
                             await client.GetContainer("TEAMModelOS", "Teacher").CreateItemAsync(blob, new Azure.Cosmos.PartitionKey(blob.code));
                         }
@@ -666,7 +669,7 @@ namespace TEAMModelOS.Controllers.Core
                     {
                         await client.GetContainer("TEAMModelOS", "School").DeleteItemStreamAsync($"{id}", new Azure.Cosmos.PartitionKey($"Bloblog-{name}"));
                     }
-                    else if (scope.GetString().Equals("teacher"))
+                    else if (scope.GetString().Equals("private"))
                     {
                         await client.GetContainer("TEAMModelOS", "Teacher").DeleteItemStreamAsync($"{id}", new Azure.Cosmos.PartitionKey($"Bloblog-{name}"));
                     }