notion-dotnet / notion-sdk-net

A Notion SDK for .Net
MIT License
181 stars 46 forks source link

Add StatusFilter #329

Closed JakoMenkveld closed 1 year ago

JakoMenkveld commented 1 year ago

Please add a StatusFilter to allow filtering on properties of type "Status":

using Newtonsoft.Json;

namespace Notion.Client
{
    public class StatusFilter : SinglePropertyFilter, IRollupSubPropertyFilter
    {
        [JsonProperty("status")]
        public Condition Status { get; set; }

        public StatusFilter(
            string propertyName,
            string equal = null,
            string doesNotEqual = null,
            bool? isEmpty = null,
            bool? isNotEmpty = null)
        {
            Property = propertyName;
            Status = new Condition(
                equal: equal,
                doesNotEqual: doesNotEqual,
                isEmpty: isEmpty,
                isNotEmpty: isNotEmpty
            );
        }

        public class Condition
        {
            [JsonProperty("equals")]
            public string Equal { get; set; }

            [JsonProperty("does_not_equal")]
            public string DoesNotEqual { get; set; }

            [JsonProperty("is_empty")]
            public bool? IsEmpty { get; set; }

            [JsonProperty("is_not_empty")]
            public bool? IsNotEmpty { get; set; }

            public Condition(
                string equal = null,
                string doesNotEqual = null,
                bool? isEmpty = null,
                bool? isNotEmpty = null)
            {
                Equal = equal;
                DoesNotEqual = doesNotEqual;
                IsEmpty = isEmpty;
                IsNotEmpty = isNotEmpty;
            }
        }
    }
}
KoditkarVedant commented 1 year ago

@JakoMenkveld I will try to spend some time over the weekend. If you want to open PR - I'll be very happy to accept it.