|
|
@@ -1,8 +1,9 @@
|
|
|
import type { Query as PiniaOrmQuery } from 'pinia-orm'
|
|
|
import type { ApiFilter } from '~/types/data'
|
|
|
import ApiResource from '~/models/ApiResource'
|
|
|
+import type { Ref } from "vue";
|
|
|
|
|
|
-export default class Equal implements ApiFilter {
|
|
|
+export default class EqualFilter implements ApiFilter {
|
|
|
field: string
|
|
|
filterValue: string | number | null | Ref<string | number | null>
|
|
|
reactiveFilter: boolean
|
|
|
@@ -26,21 +27,24 @@ export default class Equal implements ApiFilter {
|
|
|
this.reactiveFilter = reactiveFilter
|
|
|
}
|
|
|
|
|
|
- public applyToPiniaOrmQuery(
|
|
|
- query: PiniaOrmQuery<ApiResource>,
|
|
|
- ): PiniaOrmQuery<ApiResource> {
|
|
|
-
|
|
|
- let filterValue = null
|
|
|
-
|
|
|
+ protected filterValueToRef(): Ref<string | number | null> {
|
|
|
if (isRef(this.filterValue)) {
|
|
|
- filterValue = this.reactiveFilter
|
|
|
- ? this.filterValue
|
|
|
- : ref(this.filterValue.value)
|
|
|
+ if (this.reactiveFilter) {
|
|
|
+ return this.filterValue
|
|
|
+ } else {
|
|
|
+ return ref(this.filterValue.value)
|
|
|
+ }
|
|
|
} else {
|
|
|
- filterValue = ref(this.filterValue)
|
|
|
+ return ref(this.filterValue)
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ public applyToPiniaOrmQuery(
|
|
|
+ query: PiniaOrmQuery<ApiResource>,
|
|
|
+ ): PiniaOrmQuery<ApiResource> {
|
|
|
+ const filterValue = this.filterValueToRef()
|
|
|
|
|
|
- if (filterValue === null || filterValue.value === null) {
|
|
|
+ if (filterValue.value === null) {
|
|
|
return query
|
|
|
}
|
|
|
|
|
|
@@ -48,17 +52,9 @@ export default class Equal implements ApiFilter {
|
|
|
}
|
|
|
|
|
|
public getApiQueryPart(): string {
|
|
|
- let filterValue = null
|
|
|
-
|
|
|
- if (isRef(this.filterValue)) {
|
|
|
- filterValue = this.reactiveFilter
|
|
|
- ? this.filterValue
|
|
|
- : ref(this.filterValue.value)
|
|
|
- } else {
|
|
|
- filterValue = ref(this.filterValue)
|
|
|
- }
|
|
|
+ const filterValue = this.filterValueToRef()
|
|
|
|
|
|
- if (filterValue === null || filterValue.value === null) {
|
|
|
+ if (filterValue.value === null) {
|
|
|
return ''
|
|
|
}
|
|
|
|