// Package: com.lightningkite.lightningdb // Generated by Khrysalis - this file will be overwritten. import { Condition } from './Condition' import { path } from './ConditionBuilder' import { DataClassPath } from './DataClassPath' import { Modification } from './Modification' import { Comparable, EqualOverrideSet, also } from '@lightningkite/khrysalis-runtime' import { map } from 'iter-tools-es' //! Declares com.lightningkite.lightningdb.modification export function modification(setup: ((a: ModificationBuilder, b: DataClassPath) => void)): Modification { return also(new ModificationBuilder(), (this_: ModificationBuilder): void => { setup(this_, path()); }).build(); } //! Declares com.lightningkite.lightningdb.and>com.lightningkite.lightningdb.Modificationcom.lightningkite.lightningdb.and.T export function xModificationAnd(this_: Modification, setup: ((a: ModificationBuilder, b: DataClassPath) => void)): Modification { return also(new ModificationBuilder(), (this_1: ModificationBuilder): void => { this_1.modifications.push(this_); setup(this_1, path()); }).build(); } //! Declares com.lightningkite.lightningdb.ModificationBuilder export class ModificationBuilder { public constructor() { this.modifications = ([] as Array>); } public readonly modifications: Array>; public add(modification: Modification): void { this.modifications.push(modification); } public build(): Modification { if (this.modifications.length === 1) { return this.modifications[0] } else { return new Modification.Chain(this.modifications) } } public assign(this_: DataClassPath, value: T): void { this.modifications.push(this_.mapModification(new Modification.Assign(value))); } public coerceAtMost>(this_: DataClassPath, value: T): void { this.modifications.push(this_.mapModification(new Modification.CoerceAtMost(value))); } public coerceAtLeast>(this_: DataClassPath, value: T): void { this.modifications.push(this_.mapModification(new Modification.CoerceAtLeast(value))); } public plusAssignNumber(this_: DataClassPath, by: T): void { this.modifications.push(this_.mapModification(new Modification.Increment(by))); } public timesAssign(this_: DataClassPath, by: T): void { this.modifications.push(this_.mapModification(new Modification.Multiply(by))); } public plusAssignString(this_: DataClassPath, value: string): void { this.modifications.push(this_.mapModification(new Modification.AppendString(value))); } public plusAssignList(this_: DataClassPath>, items: Array): void { this.modifications.push(this_.mapModification(new Modification.ListAppend(items))); } public plusAssignSet(this_: DataClassPath>, items: Set): void { this.modifications.push(this_.mapModification(new Modification.SetAppend(items))); } public plusAssignItemList(this_: DataClassPath>, item: T): void { this.modifications.push(this_.mapModification(new Modification.ListAppend([item]))); } public plusAssignItemSet(this_: DataClassPath>, item: T): void { this.modifications.push(this_.mapModification(new Modification.SetAppend(new EqualOverrideSet([item])))); } public plusAssignListAddAll(this_: DataClassPath>, items: Array): void { this.modifications.push(this_.mapModification(new Modification.ListAppend(items))); } public plusAssignSetAddAll(this_: DataClassPath>, items: Set): void { this.modifications.push(this_.mapModification(new Modification.SetAppend(items))); } public removeAllList(this_: DataClassPath>, condition: ((a: DataClassPath) => Condition)): void { this.modifications.push(this_.mapModification(new Modification.ListRemove((condition)(path())))); } public removeAllSet(this_: DataClassPath>, condition: ((a: DataClassPath) => Condition)): void { this.modifications.push(this_.mapModification(new Modification.SetRemove((condition)(path())))); } public removeAllItemsList(this_: DataClassPath>, items: Array): void { this.modifications.push(this_.mapModification(new Modification.ListRemoveInstances(items))); } public removeAllItemsSet(this_: DataClassPath>, items: Set): void { this.modifications.push(this_.mapModification(new Modification.SetRemoveInstances(items))); } public dropLastList(this_: DataClassPath>): void { this.modifications.push(this_.mapModification(new Modification.ListDropLast())); } public dropLastSet(this_: DataClassPath>): void { this.modifications.push(this_.mapModification(new Modification.SetDropLast())); } public dropFirstList(this_: DataClassPath>): void { this.modifications.push(this_.mapModification(new Modification.ListDropFirst())); } public dropFirstSet(this_: DataClassPath>): void { this.modifications.push(this_.mapModification(new Modification.SetDropFirst())); } public forEachList(this_: DataClassPath>, modification: ((a: ModificationBuilder, b: DataClassPath) => void)): void { const builder = new ModificationBuilder(); modification(builder, path()); this.modifications.push(this_.mapModification(new Modification.ListPerElement(new Condition.Always(), builder.build()))); } public forEachSet(this_: DataClassPath>, modification: ((a: ModificationBuilder, b: DataClassPath) => void)): void { const builder = new ModificationBuilder(); modification(builder, path()); this.modifications.push(this_.mapModification(new Modification.SetPerElement(new Condition.Always(), builder.build()))); } public forEachIfList(this_: DataClassPath>, condition: ((a: DataClassPath) => Condition), modification: ((a: ModificationBuilder, b: DataClassPath) => void)): void { const builder = new ModificationBuilder(); modification(builder, path()); this.modifications.push(this_.mapModification(new Modification.ListPerElement((condition)(path()), builder.build()))); } public forEachIfSet(this_: DataClassPath>, condition: ((a: DataClassPath) => Condition), modification: ((a: ModificationBuilder, b: DataClassPath) => void)): void { const builder = new ModificationBuilder(); modification(builder, path()); this.modifications.push(this_.mapModification(new Modification.SetPerElement((condition)(path()), builder.build()))); } public plusAssignMap(this_: DataClassPath>, map: Map): void { this.modifications.push(this_.mapModification(new Modification.Combine(map))); } public modifyByKey(this_: DataClassPath>, byKey: Map, b: DataClassPath) => void)>): void { this.modifications.push(this_.mapModification(new Modification.ModifyByKey(new Map(map(x => [x[0], ((it: [string, (a: ModificationBuilder, b: DataClassPath) => void]): Modification => (modification(it[1])))(x)], byKey.entries()))))); } public removeKeys(this_: DataClassPath>, fields: Set): void { this.modifications.push(this_.mapModification(new Modification.RemoveKeys(fields))); } }