Skip to content
Merged
Show file tree
Hide file tree
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
2 changes: 2 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
<ImplicitUsings>enable</ImplicitUsings>
<MinVerMinimumMajorMinor>1.0</MinVerMinimumMajorMinor>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
<AssemblyOriginatorKeyFile>$(SolutionRoot)build\keys\keypair.snk</AssemblyOriginatorKeyFile>
<PublicKey>0024000004800000940000000602000000240000525341310004000001000100ed1d190ea5406d996c0f5b1a8acbf865fab69e948e50f3621ee36a586566357356ccb63d2bddbc967bef647c2ea7e2871c479c4aaf9dc4d4570022e0dd23d2126e60a69600d6d446b64c4413dcd07d92ee208a59f3531afc6a2afd512e8cbbdf8576887a7eaf72933f041e7134f78b358ee97fc66e80c4604c6bad7a5124fcca</PublicKey>
</PropertyGroup>

<ItemGroup>
Expand Down
3 changes: 0 additions & 3 deletions src/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,7 @@
<Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))"/>
<PropertyGroup>
<IsPackable>true</IsPackable>

<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>$(SolutionRoot)build\keys\keypair.snk</AssemblyOriginatorKeyFile>

<PackageIcon>nuget-icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
Expand Down
5 changes: 4 additions & 1 deletion src/Qdrant.Client/Qdrant.Client.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@
<Protobuf Include="..\..\protos\$(QdrantVersion)\*.proto" GrpcServices="Client" Link="Grpc\protos\$(QdrantVersion)\*.proto" Visible="false" />
</ItemGroup>


<ItemGroup>
<InternalsVisibleTo Include="$(AssemblyName).Tests" Key="$(PublicKey)" />
</ItemGroup>

<PropertyGroup>
<GeneratedText><![CDATA[
namespace Qdrant.Client.Grpc%3B
Expand Down
35 changes: 19 additions & 16 deletions src/Qdrant.Client/QdrantClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2372,19 +2372,7 @@ public async Task<UpdateResult> CreatePayloadIndexAsync(
CollectionName = collectionName,
FieldName = fieldName,
Wait = wait,
FieldType = schemaType switch
{
PayloadSchemaType.Keyword => FieldType.Keyword,
PayloadSchemaType.Integer => FieldType.Integer,
PayloadSchemaType.Float => FieldType.Float,
PayloadSchemaType.Bool => FieldType.Bool,
PayloadSchemaType.Geo => FieldType.Geo,
PayloadSchemaType.Text => FieldType.Text,
PayloadSchemaType.Datetime => FieldType.Datetime,
PayloadSchemaType.Uuid => FieldType.Uuid,

_ => throw new ArgumentException("Invalid PayloadSchemaType: " + schemaType, nameof(schemaType))
}
FieldType = FieldTypeFromPayloadSchemaType(schemaType)
};

if (indexParams is not null)
Expand Down Expand Up @@ -4000,7 +3988,7 @@ public async Task<SnapshotDescription> CreateSnapshotAsync(string collectionName
/// Universally query points.
/// Covers all capabilities of search, recommend, discover, filters.
/// Also enables hybrid and multi-stage queries.
///
///
/// </summary>
/// <param name="collectionName">The name of the collection.</param>
/// <param name="query">Query to perform. If missing, returns points ordered by their IDs.</param>
Expand Down Expand Up @@ -4100,7 +4088,7 @@ public async Task<IReadOnlyList<ScoredPoint>> QueryAsync(
/// Universally query points in batch.
/// Covers all capabilities of search, recommend, discover, filters.
/// Also enables hybrid and multi-stage queries.
///
///
/// </summary>
/// <param name="collectionName">The name of the collection.</param>
/// <param name="queries">The queries to be performed in the batch.</param>
Expand Down Expand Up @@ -4153,7 +4141,7 @@ public async Task<IReadOnlyList<BatchResult>> QueryBatchAsync(
/// Universally query points.
/// Covers all capabilities of search, recommend, discover, filters.
/// Grouped by a payload field.
///
///
/// </summary>
/// <param name="collectionName">The name of the collection.</param>
/// <param name="groupBy">Payload field to group by, must be a string or number field.</param>
Expand Down Expand Up @@ -4521,6 +4509,21 @@ await _grpcClient.Qdrant.HealthCheckAsync(
deadline: _grpcTimeout == default ? null : DateTime.UtcNow.Add(_grpcTimeout),
cancellationToken: cancellationToken).ConfigureAwait(false);

internal static FieldType FieldTypeFromPayloadSchemaType(PayloadSchemaType schemaType) =>
schemaType switch
{
PayloadSchemaType.Keyword => FieldType.Keyword,
PayloadSchemaType.Integer => FieldType.Integer,
PayloadSchemaType.Float => FieldType.Float,
PayloadSchemaType.Bool => FieldType.Bool,
PayloadSchemaType.Geo => FieldType.Geo,
PayloadSchemaType.Text => FieldType.Text,
PayloadSchemaType.Datetime => FieldType.Datetime,
PayloadSchemaType.Uuid => FieldType.Uuid,

_ => throw new ArgumentException("Invalid PayloadSchemaType: " + schemaType, nameof(schemaType))
};

private static void Populate<T>(RepeatedField<T> repeatedField, ReadOnlyMemory<T> memory)
{
if (MemoryMarshal.TryGetArray(memory, out var segment) &&
Expand Down
7 changes: 7 additions & 0 deletions tests/Directory.Build.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))"/>
<PropertyGroup>
<SignAssembly>true</SignAssembly>
</PropertyGroup>
</Project>
25 changes: 25 additions & 0 deletions tests/Qdrant.Client.Tests/StructuralTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using Qdrant.Client.Grpc;
using Xunit;

namespace Qdrant.Client;

public class StructuralTests
{
[Fact]
public void All_PayloadSchemaTypes_map_to_FieldType()
{
var schemaTypes =
((PayloadSchemaType[])Enum.GetValues(typeof(PayloadSchemaType)))
.Except([PayloadSchemaType.UnknownType]);

foreach (var schemaType in schemaTypes)
{
var ex = Record.Exception(() =>
{
var fieldType = QdrantClient.FieldTypeFromPayloadSchemaType(schemaType);
});

Assert.Null(ex);
}
}
}