@@ -22,12 +22,12 @@ final class Filter implements ValueObject
2222 *
2323 * @param string $field
2424 * @param Operator $operator
25- * @param mixed $value
25+ * @param scalar|null|array<scalar> $value
2626 */
2727 public function __construct (
2828 private readonly string $ field ,
2929 private readonly Operator $ operator ,
30- private readonly mixed $ value ,
30+ private readonly bool | float | int | string | null | array $ value ,
3131 ) {
3232 $ this ->check ();
3333 }
@@ -37,10 +37,10 @@ public function __construct(
3737 *
3838 * @param string $field
3939 * @param Operator $operator
40- * @param mixed $value
40+ * @param scalar|null|array<scalar> $value
4141 * @return Filter
4242 */
43- public static function create (string $ field , Operator $ operator , mixed $ value ): self
43+ public static function create (string $ field , Operator $ operator , bool | float | int | string | null | array $ value ): self
4444 {
4545 return new self ($ field , $ operator , $ value );
4646 }
@@ -67,62 +67,122 @@ public static function fromArray(array $filter): self
6767 );
6868 }
6969
70- public static function equal (string $ field , mixed $ value ): self
70+ /**
71+ * @param string $field
72+ * @param bool|float|int|string|null $value
73+ * @return self
74+ */
75+ public static function equal (string $ field , bool |float |int |string |null $ value ): self
7176 {
7277 return self ::create ($ field , Operator::EQUAL , $ value );
7378 }
7479
75- public static function notEqual (string $ field , mixed $ value ): self
80+ /**
81+ * @param string $field
82+ * @param bool|float|int|string|null $value
83+ * @return self
84+ */
85+ public static function notEqual (string $ field , bool |float |int |string |null $ value ): self
7686 {
7787 return self ::create ($ field , Operator::NOT_EQUAL , $ value );
7888 }
7989
80- public static function greaterThan (string $ field , mixed $ value ): self
90+ /**
91+ * @param string $field
92+ * @param bool|float|int|string|null $value
93+ * @return self
94+ */
95+ public static function greaterThan (string $ field , bool |float |int |string |null $ value ): self
8196 {
8297 return self ::create ($ field , Operator::GT , $ value );
8398 }
8499
85- public static function greaterOrEqualThan (string $ field , mixed $ value ): self
100+ /**
101+ * @param string $field
102+ * @param bool|float|int|string|null $value
103+ * @return self
104+ */
105+ public static function greaterOrEqualThan (string $ field , bool |float |int |string |null $ value ): self
86106 {
87107 return self ::create ($ field , Operator::GTE , $ value );
88108 }
89109
90- public static function lessThan (string $ field , mixed $ value ): self
110+ /**
111+ * @param string $field
112+ * @param bool|float|int|string|null $value
113+ * @return self
114+ */
115+ public static function lessThan (string $ field , bool |float |int |string |null $ value ): self
91116 {
92117 return self ::create ($ field , Operator::LT , $ value );
93118 }
94119
95- public static function lessOrEqualThan (string $ field , mixed $ value ): self
120+ /**
121+ * @param string $field
122+ * @param bool|float|int|string|null $value
123+ * @return self
124+ */
125+ public static function lessOrEqualThan (string $ field , bool |float |int |string |null $ value ): self
96126 {
97127 return self ::create ($ field , Operator::LTE , $ value );
98128 }
99129
100- public static function in (string $ field , mixed $ value ): self
130+ /**
131+ * @param string $field
132+ * @param array<scalar> $value
133+ * @return self
134+ */
135+ public static function in (string $ field , array $ value ): self
101136 {
102137 return self ::create ($ field , Operator::IN , $ value );
103138 }
104139
105- public static function notIn (string $ field , mixed $ value ): self
140+ /**
141+ * @param string $field
142+ * @param array<scalar> $value
143+ * @return self
144+ */
145+ public static function notIn (string $ field , array $ value ): self
106146 {
107147 return self ::create ($ field , Operator::NOT_IN , $ value );
108148 }
109149
110- public static function like (string $ field , mixed $ value ): self
150+ /**
151+ * @param string $field
152+ * @param bool|float|int|string|null $value
153+ * @return self
154+ */
155+ public static function like (string $ field , bool |float |int |string |null $ value ): self
111156 {
112157 return self ::create ($ field , Operator::LIKE , $ value );
113158 }
114159
115- public static function notLike (string $ field , mixed $ value ): self
160+ /**
161+ * @param string $field
162+ * @param bool|float|int|string|null $value
163+ * @return self
164+ */
165+ public static function notLike (string $ field , bool |float |int |string |null $ value ): self
116166 {
117167 return self ::create ($ field , Operator::NOT_LIKE , $ value );
118168 }
119169
120- public static function contains (string $ field , mixed $ value ): self
170+ /**
171+ * @param string $field
172+ * @param bool|float|int|string|null $value
173+ * @return self
174+ */
175+ public static function contains (string $ field , bool |float |int |string |null $ value ): self
121176 {
122177 return self ::create ($ field , Operator::CONTAINS , $ value );
123178 }
124179
125- public static function notContains (string $ field , mixed $ value ): self
180+ /**
181+ * @param string $field
182+ * @param bool|float|int|string|null $value
183+ * @return self
184+ */
185+ public static function notContains (string $ field , bool |float |int |string |null $ value ): self
126186 {
127187 return self ::create ($ field , Operator::NOT_CONTAINS , $ value );
128188 }
@@ -150,9 +210,9 @@ public function operator(): Operator
150210 /**
151211 * Return the field value.
152212 *
153- * @return mixed
213+ * @return scalar|null|array<scalar>
154214 */
155- public function value (): mixed
215+ public function value (): bool | float | int | string | null | array
156216 {
157217 return $ this ->value ;
158218 }
0 commit comments