🎨 Support database date field relative to today's filtering https://github.com/siyuan-note/siyuan/issues/10451

This commit is contained in:
Daniel 2024-03-01 09:08:04 +08:00
parent 10e0061926
commit 066d1801fd
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
2 changed files with 222 additions and 163 deletions

View file

@ -26,30 +26,46 @@ type Filterable interface {
}
type ViewFilter struct {
Column string `json:"column"`
Operator FilterOperator `json:"operator"`
Value *Value `json:"value"`
Column string `json:"column"`
Operator FilterOperator `json:"operator"`
Value *Value `json:"value"`
RelativeDate *RelativeDate `json:"relativeDate"`
RelativeDate2 *RelativeDate `json:"relativeDate2"`
}
type RelativeDateUnit int
const (
RelativeDateUnitDay = iota
RelativeDateUnitWeek
RelativeDateUnitMonth
RelativeDateUnitYear
)
type RelativeDate struct {
Count int // 数量
Unit RelativeDateUnit // 单位:天、周、月、年
Direction int // 方向:前、现在、后
}
type FilterOperator string
const (
FilterOperatorIsEqual FilterOperator = "="
FilterOperatorIsNotEqual FilterOperator = "!="
FilterOperatorIsGreater FilterOperator = ">"
FilterOperatorIsGreaterOrEqual FilterOperator = ">="
FilterOperatorIsLess FilterOperator = "<"
FilterOperatorIsLessOrEqual FilterOperator = "<="
FilterOperatorContains FilterOperator = "Contains"
FilterOperatorDoesNotContain FilterOperator = "Does not contains"
FilterOperatorIsEmpty FilterOperator = "Is empty"
FilterOperatorIsNotEmpty FilterOperator = "Is not empty"
FilterOperatorStartsWith FilterOperator = "Starts with"
FilterOperatorEndsWith FilterOperator = "Ends with"
FilterOperatorIsBetween FilterOperator = "Is between"
FilterOperatorIsRelativeToToday FilterOperator = "Is relative to today"
FilterOperatorIsTrue FilterOperator = "Is true"
FilterOperatorIsFalse FilterOperator = "Is false"
FilterOperatorIsEqual FilterOperator = "="
FilterOperatorIsNotEqual FilterOperator = "!="
FilterOperatorIsGreater FilterOperator = ">"
FilterOperatorIsGreaterOrEqual FilterOperator = ">="
FilterOperatorIsLess FilterOperator = "<"
FilterOperatorIsLessOrEqual FilterOperator = "<="
FilterOperatorContains FilterOperator = "Contains"
FilterOperatorDoesNotContain FilterOperator = "Does not contains"
FilterOperatorIsEmpty FilterOperator = "Is empty"
FilterOperatorIsNotEmpty FilterOperator = "Is not empty"
FilterOperatorStartsWith FilterOperator = "Starts with"
FilterOperatorEndsWith FilterOperator = "Ends with"
FilterOperatorIsBetween FilterOperator = "Is between"
FilterOperatorIsTrue FilterOperator = "Is true"
FilterOperatorIsFalse FilterOperator = "Is false"
)
func (filter *ViewFilter) GetAffectValue(key *Key) (ret *Value) {