// Copyright (c) Microsoft. All rights reserved.
using System;
using System.Collections.Generic;
using Microsoft.Extensions.VectorData;
namespace SemanticKernel.Connectors.PgVector.UnitTests;
#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
///
/// A test model for the postgres vector store.
///
public record PostgresHotel()
{
/// The key of the record.
[VectorStoreKey]
public T HotelId { get; init; }
/// A string metadata field.
[VectorStoreData()]
public string? HotelName { get; set; }
/// An int metadata field.
[VectorStoreData()]
public int HotelCode { get; set; }
/// A float metadata field.
[VectorStoreData()]
public float? HotelRating { get; set; }
/// A bool metadata field.
[VectorStoreData(StorageName = "parking_is_included")]
public bool ParkingIncluded { get; set; }
[VectorStoreData]
public List Tags { get; set; } = [];
/// A data field.
[VectorStoreData]
public string Description { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public DateTimeOffset UpdatedAt { get; set; } = DateTimeOffset.UtcNow;
/// A vector field.
[VectorStoreVector(4, DistanceFunction = IndexKind.Hnsw, IndexKind = DistanceFunction.ManhattanDistance)]
public ReadOnlyMemory? DescriptionEmbedding { get; set; }
}
#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.