diff options
author | Wolfgang Müller | 2025-02-13 17:52:16 +0100 |
---|---|---|
committer | Wolfgang Müller | 2025-02-13 17:52:16 +0100 |
commit | dc4db405d2991d3ec6a114f3b08d3fccd057d3ee (patch) | |
tree | 2c620c9af2062ba09fa591f8b3ed961664adab58 /frontend/src/lib/Update.ts | |
parent | 4df870d793123be95c8af031a340a39b5b8402ac (diff) | |
download | hircine-dc4db405d2991d3ec6a114f3b08d3fccd057d3ee.tar.gz |
frontend: Migrate to Svelte 5
Diffstat (limited to 'frontend/src/lib/Update.ts')
-rw-r--r-- | frontend/src/lib/Update.ts | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/frontend/src/lib/Update.ts b/frontend/src/lib/Update.ts deleted file mode 100644 index 13aec61..0000000 --- a/frontend/src/lib/Update.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { - UpdateMode, - type UpdateComicInput, - type UpdateOptions, - type UpdateTagInput -} from '$gql/graphql'; - -type Key = string | number | symbol; - -interface AssociationUpdate { - ids?: number[] | string[] | null; - options?: UpdateOptions | null; -} - -type Input<T, K extends Key> = Partial<Record<K, T | null>>; - -abstract class Entry<K extends Key> { - key: K; - - constructor(key: K) { - this.key = key; - } - - abstract integrate(input: Input<unknown, K>): void; - abstract hasInput(): boolean; -} - -class Association<K extends Key> extends Entry<K> { - ids = []; - options = { - mode: UpdateMode.Add - }; - - constructor(key: K) { - super(key); - } - - integrate(input: Input<AssociationUpdate, K>) { - if (this.hasInput()) { - input[this.key] = { ids: this.ids, options: this.options }; - } - } - - hasInput() { - return this.ids.length > 0; - } -} - -class Enum<K extends Key> extends Entry<K> { - value?: string = undefined; - - constructor(key: K) { - super(key); - } - - integrate(input: Input<string, K>): void { - if (this.hasInput()) { - input[this.key] = this.value; - } - } - - hasInput() { - return this.value !== undefined && this.value !== null; - } -} - -abstract class Controls<I> { - toInput() { - const input = {} as I; - Object.values(this).forEach((v: Entry<keyof I>) => v.integrate(input)); - return input; - } - - hasInput() { - return Object.values(this).some((i: Entry<keyof I>) => i.hasInput()); - } -} - -export class UpdateTagsControls extends Controls<UpdateTagInput> { - namespaces = new Association('namespaces'); -} - -export class UpdateComicsControls extends Controls<UpdateComicInput> { - artists = new Association('artists'); - category = new Enum('category'); - censorship = new Enum('censorship'); - direction = new Enum('direction'); - layout = new Enum('layout'); - characters = new Association('characters'); - circles = new Association('circles'); - language = new Enum('language'); - rating = new Enum('rating'); - tags = new Association('tags'); - worlds = new Association('worlds'); -} |