import { ForeignKey } from "oak-domain/lib/types/DataType"; import { Q_DateValue, Q_NumberValue, Q_StringValue, Q_EnumValue, NodeId, MakeFilter, ExprOp, ExpressionKey, SubQueryPredicateMetadata } from "oak-domain/lib/types/Demand"; import { OneOf } from "oak-domain/lib/types/Polyfill"; import { FormCreateData, FormUpdateData, DeduceAggregation, Operation as OakOperation, Selection as OakSelection, MakeAction as OakMakeAction, AggregationResult, EntityShape } from "oak-domain/lib/types/Entity"; import { Action, ParticularAction, IState } from "./Action"; import { Price, String, Text, Datetime } from "oak-domain/lib/types/DataType"; import * as Withdraw from "../Withdraw/Schema"; import * as Pay from "../Pay/Schema"; import * as User from "../User/Schema"; import * as SysAccountOper from "../SysAccountOper/Schema"; import * as AccountOper from "../AccountOper/Schema"; export type OpSchema = EntityShape & { withdrawId?: ForeignKey<"withdraw"> | null; loss: Price; payId: ForeignKey<"pay">; meta?: Object | null; externalMeta?: Object | null; externalId?: String<128> | null; price: Price; creatorId: ForeignKey<"user">; reason?: Text | null; successAt?: Datetime | null; iState?: IState | null; }; export type OpAttr = keyof OpSchema; type SysAccountOper$refundAggr = "sysAccountOper$refund$$aggr" | "sysAccountOper$refund$$0$$aggr" | "sysAccountOper$refund$$1$$aggr" | "sysAccountOper$refund$$2$$aggr" | "sysAccountOper$refund$$3$$aggr" | "sysAccountOper$refund$$4$$aggr" | "sysAccountOper$refund$$5$$aggr" | "sysAccountOper$refund$$6$$aggr" | "sysAccountOper$refund$$7$$aggr" | "sysAccountOper$refund$$8$$aggr" | "sysAccountOper$refund$$9$$aggr"; type AccountOper$entityAggr = "accountOper$entity$$aggr" | "accountOper$entity$$0$$aggr" | "accountOper$entity$$1$$aggr" | "accountOper$entity$$2$$aggr" | "accountOper$entity$$3$$aggr" | "accountOper$entity$$4$$aggr" | "accountOper$entity$$5$$aggr" | "accountOper$entity$$6$$aggr" | "accountOper$entity$$7$$aggr" | "accountOper$entity$$8$$aggr" | "accountOper$entity$$9$$aggr"; export type Schema = OpSchema & { withdraw?: Withdraw.Schema | null; pay: Pay.Schema; creator: User.Schema; sysAccountOper$refund?: Array; accountOper$entity?: Array; } & { [A in ExpressionKey]?: any; } & { [A in SysAccountOper$refundAggr]?: AggregationResult; } & { [A in AccountOper$entityAggr]?: AggregationResult; }; type AttrFilter = { id: Q_StringValue; $$createAt$$: Q_DateValue; $$seq$$: Q_NumberValue; $$updateAt$$: Q_DateValue; withdrawId: Q_StringValue; withdraw: Withdraw.Filter; loss: Q_NumberValue; payId: Q_StringValue; pay: Pay.Filter; meta: Object; externalMeta: Object; externalId: Q_StringValue; price: Q_NumberValue; creatorId: Q_StringValue; creator: User.Filter; reason: Q_StringValue; successAt: Q_DateValue; iState: Q_EnumValue; sysAccountOper$refund: SysAccountOper.Filter & SubQueryPredicateMetadata; accountOper$entity: AccountOper.Filter & SubQueryPredicateMetadata; }; export type Filter = MakeFilter>; export type Projection = { "#id"?: NodeId; [k: string]: any; id?: number; $$createAt$$?: number; $$updateAt$$?: number; $$seq$$?: number; withdrawId?: number; withdraw?: Withdraw.Projection; loss?: number; payId?: number; pay?: Pay.Projection; meta?: number | Object; externalMeta?: number | Object; externalId?: number; price?: number; creatorId?: number; creator?: User.Projection; reason?: number; successAt?: number; iState?: number; sysAccountOper$refund?: SysAccountOper.Selection & { $entity: "sysAccountOper"; }; accountOper$entity?: AccountOper.Selection & { $entity: "accountOper"; }; } & Partial> & { [A in SysAccountOper$refundAggr]?: SysAccountOper.Aggregation & { $entity: "sysAccountOper"; }; } & { [A in AccountOper$entityAggr]?: AccountOper.Aggregation & { $entity: "accountOper"; }; }; type RefundIdProjection = OneOf<{ id: number; }>; type WithdrawIdProjection = OneOf<{ withdrawId: number; }>; type PayIdProjection = OneOf<{ payId: number; }>; type UserIdProjection = OneOf<{ creatorId: number; }>; export type SortAttr = { id: number; } | { $$createAt$$: number; } | { $$seq$$: number; } | { $$updateAt$$: number; } | { withdrawId: number; } | { withdraw: Withdraw.SortAttr; } | { loss: number; } | { payId: number; } | { pay: Pay.SortAttr; } | { externalId: number; } | { price: number; } | { creatorId: number; } | { creator: User.SortAttr; } | { reason: number; } | { successAt: number; } | { iState: number; } | { [k: string]: any; } | OneOf>; export type SortNode = { $attr: SortAttr; $direction?: "asc" | "desc"; }; export type Sorter = SortNode[]; export type SelectOperation

= OakSelection<"select", P, Filter, Sorter>; export type Selection

= SelectOperation

; export type Aggregation = DeduceAggregation; export type CreateOperationData = FormCreateData> & (({ withdrawId?: never; withdraw?: Withdraw.CreateSingleOperation; } | { withdrawId: ForeignKey<"withdraw">; withdraw?: Withdraw.UpdateOperation; } | { withdraw?: never; withdrawId?: ForeignKey<"withdraw">; }) & ({ payId?: never; pay: Pay.CreateSingleOperation; } | { payId: ForeignKey<"pay">; pay?: Pay.UpdateOperation; } | { pay?: never; payId: ForeignKey<"pay">; }) & ({ creatorId?: never; creator: User.CreateSingleOperation; } | { creatorId: ForeignKey<"creator">; creator?: User.UpdateOperation; } | { creator?: never; creatorId: ForeignKey<"creator">; })) & { sysAccountOper$refund?: OakOperation<"create", Omit[]> | Array>>; accountOper$entity?: OakOperation<"create", Omit[]> | Array>>; }; export type CreateSingleOperation = OakOperation<"create", CreateOperationData>; export type CreateMultipleOperation = OakOperation<"create", Array>; export type CreateOperation = CreateSingleOperation | CreateMultipleOperation; export type UpdateOperationData = FormUpdateData> & (({ withdraw?: Withdraw.CreateSingleOperation; withdrawId?: never; } | { withdraw?: Withdraw.UpdateOperation; withdrawId?: never; } | { withdraw?: Withdraw.RemoveOperation; withdrawId?: never; } | { withdraw?: never; withdrawId?: ForeignKey<"withdraw"> | null; }) & ({ pay?: Pay.CreateSingleOperation; payId?: never; } | { pay?: Pay.UpdateOperation; payId?: never; } | { pay?: Pay.RemoveOperation; payId?: never; } | { pay?: never; payId?: ForeignKey<"pay">; }) & ({ creator?: User.CreateSingleOperation; creatorId?: never; } | { creator?: User.UpdateOperation; creatorId?: never; } | { creator?: User.RemoveOperation; creatorId?: never; } | { creator?: never; creatorId?: ForeignKey<"creator">; })) & { [k: string]: any; sysAccountOper$refund?: OakOperation<"create", Omit[]> | Array>>; accountOper$entity?: OakOperation<"create", Omit[]> | Array>>; }; export type UpdateOperation = OakOperation<"update" | ParticularAction | string, UpdateOperationData, Filter, Sorter>; export type RemoveOperationData = {} & (({ withdraw?: Withdraw.UpdateOperation | Withdraw.RemoveOperation; }) & ({ pay?: Pay.UpdateOperation | Pay.RemoveOperation; }) & ({ creator?: User.UpdateOperation | User.RemoveOperation; })); export type RemoveOperation = OakOperation<"remove", RemoveOperationData, Filter, Sorter>; export type Operation = CreateOperation | UpdateOperation | RemoveOperation; export type WithdrawIdSubQuery = Selection; export type PayIdSubQuery = Selection; export type UserIdSubQuery = Selection; export type RefundIdSubQuery = Selection; export type EntityDef = { Schema: Schema; OpSchema: OpSchema; Action: OakMakeAction | string; Selection: Selection; Aggregation: Aggregation; Operation: Operation; Create: CreateOperation; Update: UpdateOperation; Remove: RemoveOperation; CreateSingle: CreateSingleOperation; CreateMulti: CreateMultipleOperation; ParticularAction: ParticularAction; }; export {};