oak-pay-business/es/oak-app-domain/Relation/Schema.d.ts

233 lines
13 KiB
TypeScript

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 { GenericAction } from "oak-domain/lib/actions/action";
import { String } from "oak-domain/lib/types/DataType";
import * as Session from "../Session/Schema";
import * as ToDo from "../ToDo/Schema";
import * as ActionAuth from "../ActionAuth/Schema";
import * as RelationAuth from "../RelationAuth/Schema";
import * as UserEntityClaim from "../UserEntityClaim/Schema";
import * as UserRelation from "../UserRelation/Schema";
export type OpSchema = EntityShape & {
entity: "session" | "toDo" | string;
entityId?: String<64> | null;
name?: String<32> | null;
display?: String<32> | null;
};
export type OpAttr = keyof OpSchema;
type ActionAuth$relationAggr = "actionAuth$relation$$aggr" | "actionAuth$relation$$0$$aggr" | "actionAuth$relation$$1$$aggr" | "actionAuth$relation$$2$$aggr" | "actionAuth$relation$$3$$aggr" | "actionAuth$relation$$4$$aggr" | "actionAuth$relation$$5$$aggr" | "actionAuth$relation$$6$$aggr" | "actionAuth$relation$$7$$aggr" | "actionAuth$relation$$8$$aggr" | "actionAuth$relation$$9$$aggr";
type RelationAuth$sourceRelationAggr = "relationAuth$sourceRelation$$aggr" | "relationAuth$sourceRelation$$0$$aggr" | "relationAuth$sourceRelation$$1$$aggr" | "relationAuth$sourceRelation$$2$$aggr" | "relationAuth$sourceRelation$$3$$aggr" | "relationAuth$sourceRelation$$4$$aggr" | "relationAuth$sourceRelation$$5$$aggr" | "relationAuth$sourceRelation$$6$$aggr" | "relationAuth$sourceRelation$$7$$aggr" | "relationAuth$sourceRelation$$8$$aggr" | "relationAuth$sourceRelation$$9$$aggr";
type RelationAuth$destRelationAggr = "relationAuth$destRelation$$aggr" | "relationAuth$destRelation$$0$$aggr" | "relationAuth$destRelation$$1$$aggr" | "relationAuth$destRelation$$2$$aggr" | "relationAuth$destRelation$$3$$aggr" | "relationAuth$destRelation$$4$$aggr" | "relationAuth$destRelation$$5$$aggr" | "relationAuth$destRelation$$6$$aggr" | "relationAuth$destRelation$$7$$aggr" | "relationAuth$destRelation$$8$$aggr" | "relationAuth$destRelation$$9$$aggr";
type UserEntityClaim$relationAggr = "userEntityClaim$relation$$aggr" | "userEntityClaim$relation$$0$$aggr" | "userEntityClaim$relation$$1$$aggr" | "userEntityClaim$relation$$2$$aggr" | "userEntityClaim$relation$$3$$aggr" | "userEntityClaim$relation$$4$$aggr" | "userEntityClaim$relation$$5$$aggr" | "userEntityClaim$relation$$6$$aggr" | "userEntityClaim$relation$$7$$aggr" | "userEntityClaim$relation$$8$$aggr" | "userEntityClaim$relation$$9$$aggr";
type UserRelation$relationAggr = "userRelation$relation$$aggr" | "userRelation$relation$$0$$aggr" | "userRelation$relation$$1$$aggr" | "userRelation$relation$$2$$aggr" | "userRelation$relation$$3$$aggr" | "userRelation$relation$$4$$aggr" | "userRelation$relation$$5$$aggr" | "userRelation$relation$$6$$aggr" | "userRelation$relation$$7$$aggr" | "userRelation$relation$$8$$aggr" | "userRelation$relation$$9$$aggr";
export type Schema = OpSchema & {
session?: Session.Schema;
toDo?: ToDo.Schema;
actionAuth$relation?: Array<ActionAuth.Schema>;
relationAuth$sourceRelation?: Array<RelationAuth.Schema>;
relationAuth$destRelation?: Array<RelationAuth.Schema>;
userEntityClaim$relation?: Array<UserEntityClaim.Schema>;
userRelation$relation?: Array<UserRelation.Schema>;
} & {
[A in ExpressionKey]?: any;
} & {
[A in ActionAuth$relationAggr]?: AggregationResult<ActionAuth.Schema>;
} & {
[A in RelationAuth$sourceRelationAggr]?: AggregationResult<RelationAuth.Schema>;
} & {
[A in RelationAuth$destRelationAggr]?: AggregationResult<RelationAuth.Schema>;
} & {
[A in UserEntityClaim$relationAggr]?: AggregationResult<UserEntityClaim.Schema>;
} & {
[A in UserRelation$relationAggr]?: AggregationResult<UserRelation.Schema>;
};
type AttrFilter = {
id: Q_StringValue;
$$createAt$$: Q_DateValue;
$$seq$$: Q_NumberValue;
$$updateAt$$: Q_DateValue;
entity: Q_EnumValue<"session" | "toDo" | string>;
entityId: Q_StringValue;
name: Q_StringValue;
display: Q_StringValue;
session: Session.Filter;
toDo: ToDo.Filter;
actionAuth$relation: ActionAuth.Filter & SubQueryPredicateMetadata;
relationAuth$sourceRelation: RelationAuth.Filter & SubQueryPredicateMetadata;
relationAuth$destRelation: RelationAuth.Filter & SubQueryPredicateMetadata;
userEntityClaim$relation: UserEntityClaim.Filter & SubQueryPredicateMetadata;
userRelation$relation: UserRelation.Filter & SubQueryPredicateMetadata;
};
export type Filter = MakeFilter<AttrFilter & ExprOp<OpAttr | string>>;
export type Projection = {
"#id"?: NodeId;
[k: string]: any;
id?: number;
$$createAt$$?: number;
$$updateAt$$?: number;
$$seq$$?: number;
entity?: number;
entityId?: number;
name?: number;
display?: number;
session?: Session.Projection;
toDo?: ToDo.Projection;
actionAuth$relation?: ActionAuth.Selection & {
$entity: "actionAuth";
};
relationAuth$sourceRelation?: RelationAuth.Selection & {
$entity: "relationAuth";
};
relationAuth$destRelation?: RelationAuth.Selection & {
$entity: "relationAuth";
};
userEntityClaim$relation?: UserEntityClaim.Selection & {
$entity: "userEntityClaim";
};
userRelation$relation?: UserRelation.Selection & {
$entity: "userRelation";
};
} & Partial<ExprOp<OpAttr | string>> & {
[A in ActionAuth$relationAggr]?: ActionAuth.Aggregation & {
$entity: "actionAuth";
};
} & {
[A in RelationAuth$sourceRelationAggr]?: RelationAuth.Aggregation & {
$entity: "relationAuth";
};
} & {
[A in RelationAuth$destRelationAggr]?: RelationAuth.Aggregation & {
$entity: "relationAuth";
};
} & {
[A in UserEntityClaim$relationAggr]?: UserEntityClaim.Aggregation & {
$entity: "userEntityClaim";
};
} & {
[A in UserRelation$relationAggr]?: UserRelation.Aggregation & {
$entity: "userRelation";
};
};
type RelationIdProjection = OneOf<{
id: number;
}>;
type SessionIdProjection = OneOf<{
entityId: number;
}>;
type ToDoIdProjection = OneOf<{
entityId: number;
}>;
export type SortAttr = {
id: number;
} | {
$$createAt$$: number;
} | {
$$seq$$: number;
} | {
$$updateAt$$: number;
} | {
entity: number;
} | {
entityId: number;
} | {
name: number;
} | {
display: number;
} | {
session: Session.SortAttr;
} | {
toDo: ToDo.SortAttr;
} | {
[k: string]: any;
} | OneOf<ExprOp<OpAttr | string>>;
export type SortNode = {
$attr: SortAttr;
$direction?: "asc" | "desc";
};
export type Sorter = SortNode[];
export type SelectOperation<P extends Object = Projection> = OakSelection<"select", P, Filter, Sorter>;
export type Selection<P extends Object = Projection> = SelectOperation<P>;
export type Aggregation = DeduceAggregation<Projection, Filter, Sorter>;
export type CreateOperationData = FormCreateData<Omit<OpSchema, "entity" | "entityId">> & ({
entity?: never;
entityId?: never;
session?: Session.CreateSingleOperation;
} | {
entity: "session";
entityId?: ForeignKey<"Session">;
session?: Session.UpdateOperation;
} | {
entity: "session";
entityId?: ForeignKey<"Session">;
session?: never;
} | {
entity?: never;
entityId?: never;
toDo?: ToDo.CreateSingleOperation;
} | {
entity: "toDo";
entityId?: ForeignKey<"ToDo">;
toDo?: ToDo.UpdateOperation;
} | {
entity: "toDo";
entityId?: ForeignKey<"ToDo">;
toDo?: never;
} | {
entity?: string;
entityId?: string;
[K: string]: any;
}) & {
userEntityClaim$relation?: OakOperation<UserEntityClaim.UpdateOperation["action"], Omit<UserEntityClaim.UpdateOperationData, "relation" | "relationId">, Omit<UserEntityClaim.Filter, "relation" | "relationId">> | OakOperation<"create", Omit<UserEntityClaim.CreateOperationData, "relation" | "relationId">[]> | Array<OakOperation<"create", Omit<UserEntityClaim.CreateOperationData, "relation" | "relationId">> | OakOperation<UserEntityClaim.UpdateOperation["action"], Omit<UserEntityClaim.UpdateOperationData, "relation" | "relationId">, Omit<UserEntityClaim.Filter, "relation" | "relationId">>>;
userRelation$relation?: OakOperation<UserRelation.UpdateOperation["action"], Omit<UserRelation.UpdateOperationData, "relation" | "relationId">, Omit<UserRelation.Filter, "relation" | "relationId">> | OakOperation<"create", Omit<UserRelation.CreateOperationData, "relation" | "relationId">[]> | Array<OakOperation<"create", Omit<UserRelation.CreateOperationData, "relation" | "relationId">> | OakOperation<UserRelation.UpdateOperation["action"], Omit<UserRelation.UpdateOperationData, "relation" | "relationId">, Omit<UserRelation.Filter, "relation" | "relationId">>>;
};
export type CreateSingleOperation = OakOperation<"create", CreateOperationData>;
export type CreateMultipleOperation = OakOperation<"create", Array<CreateOperationData>>;
export type CreateOperation = CreateSingleOperation | CreateMultipleOperation;
export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "entity" | "entityId">> & ({
session?: Session.CreateSingleOperation | Session.UpdateOperation | Session.RemoveOperation;
entityId?: never;
entity?: never;
} | {
toDo?: ToDo.CreateSingleOperation | ToDo.UpdateOperation | ToDo.RemoveOperation;
entityId?: never;
entity?: never;
} | {
entity?: ("session" | "toDo" | string) | null;
entityId?: ForeignKey<"Session" | "ToDo">;
session?: never;
toDo?: never;
}) & {
[k: string]: any;
userEntityClaim$relation?: OakOperation<UserEntityClaim.UpdateOperation["action"], Omit<UserEntityClaim.UpdateOperationData, "relation" | "relationId">, Omit<UserEntityClaim.Filter, "relation" | "relationId">> | OakOperation<UserEntityClaim.RemoveOperation["action"], Omit<UserEntityClaim.RemoveOperationData, "relation" | "relationId">, Omit<UserEntityClaim.Filter, "relation" | "relationId">> | OakOperation<"create", Omit<UserEntityClaim.CreateOperationData, "relation" | "relationId">[]> | Array<OakOperation<"create", Omit<UserEntityClaim.CreateOperationData, "relation" | "relationId">> | OakOperation<UserEntityClaim.UpdateOperation["action"], Omit<UserEntityClaim.UpdateOperationData, "relation" | "relationId">, Omit<UserEntityClaim.Filter, "relation" | "relationId">> | OakOperation<UserEntityClaim.RemoveOperation["action"], Omit<UserEntityClaim.RemoveOperationData, "relation" | "relationId">, Omit<UserEntityClaim.Filter, "relation" | "relationId">>>;
userRelation$relation?: OakOperation<UserRelation.UpdateOperation["action"], Omit<UserRelation.UpdateOperationData, "relation" | "relationId">, Omit<UserRelation.Filter, "relation" | "relationId">> | OakOperation<UserRelation.RemoveOperation["action"], Omit<UserRelation.RemoveOperationData, "relation" | "relationId">, Omit<UserRelation.Filter, "relation" | "relationId">> | OakOperation<"create", Omit<UserRelation.CreateOperationData, "relation" | "relationId">[]> | Array<OakOperation<"create", Omit<UserRelation.CreateOperationData, "relation" | "relationId">> | OakOperation<UserRelation.UpdateOperation["action"], Omit<UserRelation.UpdateOperationData, "relation" | "relationId">, Omit<UserRelation.Filter, "relation" | "relationId">> | OakOperation<UserRelation.RemoveOperation["action"], Omit<UserRelation.RemoveOperationData, "relation" | "relationId">, Omit<UserRelation.Filter, "relation" | "relationId">>>;
};
export type UpdateOperation = OakOperation<"update" | string, UpdateOperationData, Filter, Sorter>;
export type RemoveOperationData = {} & ({
session?: Session.UpdateOperation | Session.RemoveOperation;
} | {
toDo?: ToDo.UpdateOperation | ToDo.RemoveOperation;
} | {
[k: string]: any;
});
export type RemoveOperation = OakOperation<"remove", RemoveOperationData, Filter, Sorter>;
export type Operation = CreateOperation | UpdateOperation | RemoveOperation;
export type SessionIdSubQuery = Selection<SessionIdProjection>;
export type ToDoIdSubQuery = Selection<ToDoIdProjection>;
export type RelationIdSubQuery = Selection<RelationIdProjection>;
export type EntityDef = {
Schema: Schema;
OpSchema: OpSchema;
Action: OakMakeAction<GenericAction> | string;
Selection: Selection;
Aggregation: Aggregation;
Operation: Operation;
Create: CreateOperation;
Update: UpdateOperation;
Remove: RemoveOperation;
CreateSingle: CreateSingleOperation;
CreateMulti: CreateMultipleOperation;
};
export {};