Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

using System.Collections.Concurrent;
using System.Diagnostics.CodeAnalysis;
using System.IO.Abstractions;
using Azure.DataApiBuilder.Config.DatabasePrimitives;
Expand All @@ -26,7 +27,7 @@ public class CosmosSqlMetadataProvider : ISqlMetadataProvider
private CosmosDbNoSQLDataSourceOptions _cosmosDb;
private readonly RuntimeEntities _runtimeConfigEntities;
private readonly bool _isDevelopmentMode;
private Dictionary<string, string> _partitionKeyPaths = new();
private ConcurrentDictionary<string, string> _partitionKeyPaths = new();

/// <summary>
/// This contains each entity into EDM model convention which will be used to traverse DB Policy filter using ODataParser
Expand Down Expand Up @@ -536,17 +537,21 @@ public IReadOnlyDictionary<string, DatabaseObject> GetEntityNamesAndDbObjects()
/// <inheritdoc />
public string? GetPartitionKeyPath(string database, string container)
{
ArgumentNullException.ThrowIfNull(database);
ArgumentNullException.ThrowIfNull(container);

_partitionKeyPaths.TryGetValue($"{database}/{container}", out string? partitionKeyPath);
return partitionKeyPath;
}

/// <inheritdoc />
public void SetPartitionKeyPath(string database, string container, string partitionKeyPath)
{
if (!_partitionKeyPaths.TryAdd($"{database}/{container}", partitionKeyPath))
{
_partitionKeyPaths[$"{database}/{container}"] = partitionKeyPath;
}
ArgumentNullException.ThrowIfNull(database);
ArgumentNullException.ThrowIfNull(container);
ArgumentNullException.ThrowIfNull(partitionKeyPath);

_partitionKeyPaths.AddOrUpdate($"{database}/{container}", partitionKeyPath, (key, oldValue) => partitionKeyPath);
}

public bool TryGetEntityNameFromPath(string entityPathName, [NotNullWhen(true)] out string? entityName)
Expand Down
Loading