import { ForeignKey, JsonProjection } from "oak-domain/lib/types/DataType"; import { Q_DateValue, Q_BooleanValue, Q_NumberValue, Q_StringValue, Q_EnumValue, NodeId, ExprOp, ExpressionKey, JsonFilter } from "oak-domain/lib/types/Demand"; import { MakeAction as OakMakeAction, EntityShape } from "oak-domain/lib/types/Entity"; import { Action, ParticularAction } from "./Action"; import { String, Boolean, Text, Datetime } from "oak-domain/lib/types/DataType"; import { QrCodeType } from "oak-general-business/lib/types/Config"; export type RedirectToProps = { pathname: string; props?: Record; state?: Record; isTabBar?: boolean; }; type Rule = "single" | "all" | "free"; type RelationIds = string[]; export type OpSchema = EntityShape & { relationEntity: String<32>; relationEntityFilter: Object; relationIds: RelationIds; entity: String<32>; entityId: String<64>; type: "grant" | "transfer"; rule: Rule; ruleOnRow: Rule; multiple?: Boolean | null; remark?: Text | null; granterId: ForeignKey<"user">; qrCodeType: QrCodeType; expiresAt?: Datetime | null; expired?: Boolean | null; redirectTo?: RedirectToProps | null; claimUrl: String<128>; } & { [A in ExpressionKey]?: any; }; export type OpAttr = keyof OpSchema; export type OpFilter = { id: Q_StringValue; $$createAt$$: Q_DateValue; $$seq$$: Q_NumberValue; $$updateAt$$: Q_DateValue; relationEntity: Q_StringValue; relationEntityFilter: Object; relationIds: JsonFilter; entity: Q_StringValue; entityId: Q_StringValue; type: Q_EnumValue<"grant" | "transfer">; rule: Q_EnumValue; ruleOnRow: Q_EnumValue; multiple: Q_BooleanValue; remark: Q_StringValue; granterId: Q_StringValue; qrCodeType: Q_EnumValue; expiresAt: Q_DateValue; expired: Q_BooleanValue; redirectTo: JsonFilter; claimUrl: Q_StringValue; } & ExprOp; export type OpProjection = { "#id"?: NodeId; [k: string]: any; id?: number; $$createAt$$?: number; $$updateAt$$?: number; $$seq$$?: number; relationEntity?: number; relationEntityFilter?: number | Object; relationIds?: number | JsonProjection; entity?: number; entityId?: number; type?: number; rule?: number; ruleOnRow?: number; multiple?: number; remark?: number; granterId?: number; qrCodeType?: number; expiresAt?: number; expired?: number; redirectTo?: number | JsonProjection; claimUrl?: number; } & Partial>; export type OpSortAttr = Partial<{ id: number; $$createAt$$: number; $$seq$$: number; $$updateAt$$: number; relationEntity: number; relationIds: number; entity: number; entityId: number; type: number; rule: number; ruleOnRow: number; multiple: number; remark: number; granterId: number; qrCodeType: number; expiresAt: number; expired: number; redirectTo: number; claimUrl: number; [k: string]: any; } | ExprOp>; export type OpAction = OakMakeAction; export type OpUpdateAction = "update" | ParticularAction | string; export {};