Skip to content

HakanUcaar/ElasticSpecification

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

ElasticSpecification

Nest ve Elastic client için query specification oluşturma

Örnek

ElasticClient

Spec :

public class UserIdEqualsSpecification<T>(Guid user_id) : ElasticSpecification<T> where T : class
{
    public override Query ToQuery()
    {
        return new TermQuery(Infer.Field("user_id"))
        {
            Value = user_id.ToString()
        };
    }
}

Kullanım :

   var spec = SpecificationBuilderFactory.GetClientBuilder<ComplaintDocument>()
       .And<UserIdEqualsSpecification<ComplaintDocument>>(userId)
       .And<ComplaintReasonEqualsSpecification<ComplaintDocument>>(reasonType)
       .And<ComplaintReasonTypeIdEqualsSpecification<ComplaintDocument>>(reasonTypeId)            
       .Build();

   var response = await elasticClient.SearchAsync<ComplaintDocument>(s => s
       .Index(TableNameConstants.Complaint)
       .Query(spec.ToQuery())
       );

Nest

Spec :

public class CreatedAtLessThanSpecification<T>(DateTime lessThanDate) : ElasticSpecification<T> where T : class
{

    public override QueryContainer ToQuery(QueryContainerDescriptor<T> descriptor)
    {
        return descriptor.DateRange(dr => dr
            .Field("created_at")
            .LessThan(lessThanDate)
        );
    }
}

Kullanım :

 var spec = SpecificationBuilderFactory.GetNestBuilder<GetPostReactionsQueryResult>()
     .And<PostIdEqualsSpecification<GetPostReactionsQueryResult>>(request.PostId)
     .And<CreatedAtLessThanSpecification<GetPostReactionsQueryResult>>(request.LastCreatedDate)
     .Build();

 var query = await nestClient.SearchAsync<GetPostReactionsQueryResult>(s => s
     .Index(TableNameConstants.PostReaction)
     .Query(q => spec.ToQuery(q))
 );

About

Elastic search query specification pattern

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages