// Package: com.lightningkite.lightningdb // Generated by Khrysalis - customized. import { Condition } from './Condition' import { Modification } from './Modification' import { keySet } from './TProperty1Extensions' import { EqualOverrideSet, ReifiedType, TProperty1, reflectiveGet, setUpDataClass } from '@lightningkite/khrysalis-runtime' import { firstOr } from 'iter-tools-es' //! Declares com.lightningkite.lightningdb.DataClassPathPartial export abstract class DataClassPathPartial { protected constructor() { } public abstract getAny(key: K): (any | null) public abstract setAny(key: K, any: (any | null)): K public abstract readonly properties: Array>; public abstract hashCode(): number public abstract toString(): string public abstract equals(other: (any | null)): boolean } //! Declares com.lightningkite.lightningdb.DataClassPath export abstract class DataClassPath extends DataClassPathPartial { protected constructor() { super(); } public abstract get(key: K): (V | null) public abstract set(key: K, value: V): K public getAny(key: K): (any | null) { return this.get(key); } public setAny(key: K, any: (any | null)): K { return this.set(key, any as V); } public abstract mapCondition(condition: Condition): Condition public abstract mapModification(modification: Modification): Modification public prop(prop: TProperty1): DataClassPathAccess { return new DataClassPathAccess(this, prop); } } //! Declares com.lightningkite.lightningdb.DataClassPathSelf export class DataClassPathSelf extends DataClassPath { public constructor() { super(); } public get(key: K): (K | null) { return key; } public set(key: K, value: K): K { return value; } public toString(): string { return "this"; } public hashCode(): number { return 0; } public equals(other: (any | null)): boolean { return other instanceof DataClassPathSelf; } //! Declares com.lightningkite.lightningdb.DataClassPathSelf.properties public get properties(): Array> { return []; } public mapCondition(condition: Condition): Condition { return condition; } public mapModification(modification: Modification): Modification { return modification; } } //! Declares com.lightningkite.lightningdb.DataClassPathAccess export class DataClassPathAccess extends DataClassPath { public constructor(public readonly first: DataClassPath, public readonly second: TProperty1) { super(); } public static properties = ["first", "second"] public static propertyTypes(K: ReifiedType, M: ReifiedType, V: ReifiedType) { return {first: [DataClassPath, K, M], second: [String, M, V]} } copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; public get(key: K): (V | null) { return ((): (V | null) => { const temp0 = this.first.get(key); if (temp0 === null || temp0 === undefined) { return null } return ((it: M): V => (reflectiveGet(it, this.second)))(temp0) })(); } public set(key: K, value: V): K { return ((): (K | null) => { const temp3 = this.first.get(key); if (temp3 === null || temp3 === undefined) { return null } return ((it: M): K => (this.first.set(key, keySet(it, this.second, value))))(temp3) })() ?? key; } public toString(): string { return this.first instanceof DataClassPathSelf ? `${this.second}` : `${this.first}.${this.second}`; } //! Declares com.lightningkite.lightningdb.DataClassPathAccess.properties public get properties(): Array> { return this.first.properties.concat([`${this.second}`]); } public mapCondition(condition: Condition): Condition { return this.first.mapCondition(new Condition.OnField(this.second, condition)); } public mapModification(modification: Modification): Modification { return this.first.mapModification(new Modification.OnField(this.second, modification)); } } setUpDataClass(DataClassPathAccess) //! Declares com.lightningkite.lightningdb.DataClassPathNotNull export class DataClassPathNotNull extends DataClassPath { public constructor(public readonly wraps: DataClassPath) { super(); } public static properties = ["wraps"] public static propertyTypes(K: ReifiedType, V: ReifiedType) { return {wraps: [DataClassPath, K, V]} } copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; //! Declares com.lightningkite.lightningdb.DataClassPathNotNull.properties public get properties(): Array> { return this.wraps.properties; } public get(key: K): (V | null) { return this.wraps.get(key); } public set(key: K, value: V): K { return this.wraps.set(key, value); } public toString(): string { return `${this.wraps}?`; } public mapCondition(condition: Condition): Condition { return this.wraps.mapCondition(new Condition.IfNotNull(condition)); } public mapModification(modification: Modification): Modification { return this.wraps.mapModification(new Modification.IfNotNull(modification)); } } setUpDataClass(DataClassPathNotNull) //! Declares com.lightningkite.lightningdb.DataClassPathList export class DataClassPathList extends DataClassPath { public constructor(public readonly wraps: DataClassPath>) { super(); } public static properties = ["wraps"] public static propertyTypes(K: ReifiedType, V: ReifiedType) { return {wraps: [DataClassPath, K, [Array, V]]} } copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; //! Declares com.lightningkite.lightningdb.DataClassPathList.properties public get properties(): Array> { return this.wraps.properties; } public get(key: K): (V | null) { return ((): (V | null) => { const temp10 = this.wraps.get(key); if (temp10 === null || temp10 === undefined) { return null } return (temp10[0] ?? null) })(); } public set(key: K, value: V): K { return this.wraps.set(key, [value]); } public toString(): string { return `${this.wraps}.*`; } public mapCondition(condition: Condition): Condition { return this.wraps.mapCondition(new Condition.ListAllElements(condition)); } public mapModification(modification: Modification): Modification { return this.wraps.mapModification(new Modification.ListPerElement(new Condition.Always(), modification)); } } setUpDataClass(DataClassPathList) //! Declares com.lightningkite.lightningdb.DataClassPathSet export class DataClassPathSet extends DataClassPath { public constructor(public readonly wraps: DataClassPath>) { super(); } public static properties = ["wraps"] public static propertyTypes(K: ReifiedType, V: ReifiedType) { return {wraps: [DataClassPath, K, [Set, V]]} } copy: (values: Partial>) => this; equals: (other: any) => boolean; hashCode: () => number; //! Declares com.lightningkite.lightningdb.DataClassPathSet.properties public get properties(): Array> { return this.wraps.properties; } public get(key: K): (V | null) { return ((): (V | null) => { const temp11 = this.wraps.get(key); if (temp11 === null || temp11 === undefined) { return null } return firstOr(null, temp11)! })(); } public set(key: K, value: V): K { return this.wraps.set(key, new EqualOverrideSet([value])); } public toString(): string { return `${this.wraps}.*`; } public mapCondition(condition: Condition): Condition { return this.wraps.mapCondition(new Condition.SetAllElements(condition)); } public mapModification(modification: Modification): Modification { return this.wraps.mapModification(new Modification.SetPerElement(new Condition.Always(), modification)); } } setUpDataClass(DataClassPathSet) //! Declares com.lightningkite.lightningdb.notNull>com.lightningkite.lightningdb.DataClassPathcom.lightningkite.lightningdb.notNull.K, com.lightningkite.lightningdb.notNull.V export function notNullGet(this_: DataClassPath): DataClassPathNotNull { return new DataClassPathNotNull(this_); } //! Declares com.lightningkite.lightningdb.elements>com.lightningkite.lightningdb.DataClassPathcom.lightningkite.lightningdb.elements.K, kotlin.collections.Listcom.lightningkite.lightningdb.elements.V export function listElementsGet(this_: DataClassPath>): DataClassPathList { return new DataClassPathList(this_); } //! Declares com.lightningkite.lightningdb.elements>com.lightningkite.lightningdb.DataClassPathcom.lightningkite.lightningdb.elements.K, kotlin.collections.Setcom.lightningkite.lightningdb.elements.V export function setElementsGet(this_: DataClassPath>): DataClassPathSet { return new DataClassPathSet(this_); }