mirror of https://github.com/AMT-Cheif/drift.git
add filters for custom objects
This commit is contained in:
parent
83b04e7073
commit
c22935cd7a
|
@ -1,7 +1,7 @@
|
|||
part of 'manager.dart';
|
||||
|
||||
/// Defines a class which is used to wrap a column to only expose filter functions
|
||||
class ColumnFilters<T extends Object> {
|
||||
class ColumnFilters<T extends Object, C extends GeneratedColumn<T>> {
|
||||
/// This class is a wrapper on top of the generated column class
|
||||
///
|
||||
/// It's used to expose filter functions for a column type
|
||||
|
@ -16,7 +16,7 @@ class ColumnFilters<T extends Object> {
|
|||
ColumnFilters(this.column);
|
||||
|
||||
/// Column that this [ColumnFilters] wraps
|
||||
GeneratedColumn<T> column;
|
||||
C column;
|
||||
|
||||
/// Create a filter that checks if the column is null.
|
||||
ComposableFilter isNull() => ComposableFilter.simple(column.isNull());
|
||||
|
@ -28,13 +28,13 @@ class ColumnFilters<T extends Object> {
|
|||
ComposableFilter equals(T value) =>
|
||||
ComposableFilter.simple(column.equals(value));
|
||||
|
||||
/// Create a filter that checks if the column equals a value.
|
||||
/// Shortcut for [equals]
|
||||
ComposableFilter call(T value) =>
|
||||
ComposableFilter.simple(column.equals(value));
|
||||
}
|
||||
|
||||
/// Built in filters for int/double columns
|
||||
extension NumFilters<T extends num> on ColumnFilters<T> {
|
||||
extension NumFilters<T extends num> on ColumnFilters<T, GeneratedColumn<T>> {
|
||||
/// Create a filter to check if the column is bigger than a value
|
||||
ComposableFilter isBiggerThan(T value) =>
|
||||
ComposableFilter.simple(column.isBiggerThanValue(value));
|
||||
|
@ -61,7 +61,8 @@ extension NumFilters<T extends num> on ColumnFilters<T> {
|
|||
}
|
||||
|
||||
/// Built in filters for BigInt columns
|
||||
extension BigIntFilters<T extends BigInt> on ColumnFilters<T> {
|
||||
extension BigIntFilters<T extends BigInt>
|
||||
on ColumnFilters<T, GeneratedColumn<T>> {
|
||||
/// Create a filter to check if the column is bigger than a value
|
||||
ComposableFilter isBiggerThan(T value) =>
|
||||
ComposableFilter.simple(column.isBiggerThanValue(value));
|
||||
|
@ -88,7 +89,8 @@ extension BigIntFilters<T extends BigInt> on ColumnFilters<T> {
|
|||
}
|
||||
|
||||
/// Built in filters for String columns
|
||||
extension DateFilters<T extends DateTime> on ColumnFilters<T> {
|
||||
extension DateFilters<T extends DateTime>
|
||||
on ColumnFilters<T, GeneratedColumn<T>> {
|
||||
/// Create a filter to check if the column is after a [DateTime]
|
||||
ComposableFilter isAfter(T value) =>
|
||||
ComposableFilter.simple(column.isBiggerThanValue(value));
|
||||
|
@ -115,6 +117,22 @@ extension DateFilters<T extends DateTime> on ColumnFilters<T> {
|
|||
isBetween(lower, higher)._reversed();
|
||||
}
|
||||
|
||||
extension CustomFilters<CUSTOM, T extends Object,
|
||||
C extends GeneratedColumnWithTypeConverter<CUSTOM, T>>
|
||||
on ColumnFilters<T, C> {
|
||||
/// Create a filter that checks if the column equals the columns custom type
|
||||
ComposableFilter equals(CUSTOM value) =>
|
||||
ComposableFilter.simple(column.equalsValue(value));
|
||||
|
||||
/// Create a filter that checks if the column equals the value of the columns custom type
|
||||
ComposableFilter equalsValue(T value) =>
|
||||
ComposableFilter.simple(column.equals(value));
|
||||
|
||||
/// Shortcut for [equals]
|
||||
ComposableFilter call(CUSTOM value) =>
|
||||
ComposableFilter.simple(column.equalsValue(value));
|
||||
}
|
||||
|
||||
/// Defines a class that can be used to compose filters for a column
|
||||
class ComposableFilter implements HasJoinBuilders {
|
||||
@override
|
||||
|
|
Loading…
Reference in New Issue