diff --git a/mediarepo-ui/src-tauri/Cargo.lock b/mediarepo-ui/src-tauri/Cargo.lock index 3cd9145..eb74fdc 100644 --- a/mediarepo-ui/src-tauri/Cargo.lock +++ b/mediarepo-ui/src-tauri/Cargo.lock @@ -1491,8 +1491,8 @@ checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "mediarepo-api" -version = "0.13.0" -source = "git+https://github.com/Trivernis/mediarepo-api.git?rev=d64787c36e6cf68567db1c480860cd95b7c20e3f#d64787c36e6cf68567db1c480860cd95b7c20e3f" +version = "0.14.0" +source = "git+https://github.com/Trivernis/mediarepo-api.git?rev=14f2675f5fe1a11ea3302a623d040e77dcc78080#14f2675f5fe1a11ea3302a623d040e77dcc78080" dependencies = [ "async-trait", "bromine", diff --git a/mediarepo-ui/src-tauri/Cargo.toml b/mediarepo-ui/src-tauri/Cargo.toml index 95d409a..5a43be9 100644 --- a/mediarepo-ui/src-tauri/Cargo.toml +++ b/mediarepo-ui/src-tauri/Cargo.toml @@ -25,7 +25,7 @@ features = [ "env-filter" ] [dependencies.mediarepo-api] git = "https://github.com/Trivernis/mediarepo-api.git" -rev = "d64787c36e6cf68567db1c480860cd95b7c20e3f" +rev = "14f2675f5fe1a11ea3302a623d040e77dcc78080" features = [ "tauri-plugin" ] [features] diff --git a/mediarepo-ui/src/app/models/FilterExpression.ts b/mediarepo-ui/src/app/models/FilterExpression.ts index 98d304f..08a5ea9 100644 --- a/mediarepo-ui/src/app/models/FilterExpression.ts +++ b/mediarepo-ui/src/app/models/FilterExpression.ts @@ -1,4 +1,5 @@ import {TagQuery} from "./TagQuery"; +import {createRustEnum, RustEnum} from "./rust-types"; export interface FilterExpression { filter_type: "OrExpression" | "Query"; @@ -13,6 +14,8 @@ export interface FilterExpression { clone(): FilterExpression; queryList(): TagQuery[]; + + toBackendType(): RustEnum; } export class OrFilterExpression implements FilterExpression { @@ -60,6 +63,10 @@ export class OrFilterExpression implements FilterExpression { } this.filter = newEntries.reverse(); } + + public toBackendType(): RustEnum { + return createRustEnum(this.filter_type, this.filter); + } } export class SingleFilterExpression implements FilterExpression { @@ -90,4 +97,8 @@ export class SingleFilterExpression implements FilterExpression { public queryList(): TagQuery[] { return [this.filter] } + + public toBackendType(): RustEnum { + return createRustEnum(this.filter_type, this.filter); + } } diff --git a/mediarepo-ui/src/app/models/rust-types.ts b/mediarepo-ui/src/app/models/rust-types.ts new file mode 100644 index 0000000..0dbc23c --- /dev/null +++ b/mediarepo-ui/src/app/models/rust-types.ts @@ -0,0 +1,10 @@ +export type RustEnum = { + [key: string]: VariantData +}; + +export function createRustEnum(variant: string, data: VariantData): RustEnum { + let enumInstance: RustEnum = {}; + enumInstance[variant] = data; + + return enumInstance; +} diff --git a/mediarepo-ui/src/app/services/file/file.service.ts b/mediarepo-ui/src/app/services/file/file.service.ts index b6e7c02..2309e41 100644 --- a/mediarepo-ui/src/app/services/file/file.service.ts +++ b/mediarepo-ui/src/app/services/file/file.service.ts @@ -35,8 +35,9 @@ export class FileService { public async findFiles(filters: FilterExpression[], sortBy: SortKey[]) { console.log(filters); + let backendFilters = filters.map(f => f.toBackendType()); let files = await invoke("plugin:mediarepo|find_files", - {filters, sortBy: sortBy.map(k => k.toBackendType())}); + {filters: backendFilters, sortBy: sortBy.map(k => k.toBackendType())}); this.displayedFiles.next(files); }