增加了passport和applicationPassport

This commit is contained in:
Xu Chang 2024-07-26 13:30:32 +08:00
parent fb21242e8c
commit 525f1489ec
64 changed files with 1538 additions and 112 deletions

View File

@ -1,7 +1,7 @@
import { Style } from '../../../../types/Style';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../../oak-app-domain").EntityDict, keyof import("../../../../oak-app-domain").EntityDict, false, {
style: Style;
entity: "application" | "platform" | "system";
entity: "system" | "application" | "platform";
entityId: string;
name: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;

View File

@ -1,7 +1,7 @@
import { Config } from '../../../types/Config';
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, keyof import("../../../oak-app-domain").EntityDict, false, {
config: Config;
entity: "platform" | "system";
entity: "system" | "platform";
name: string;
entityId: string;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;

View File

@ -4,8 +4,8 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
entity: keyof EntityDict;
entityFilter: any;
relationIds: string[];
rule: "all" | "single" | "free";
ruleOnRow: "all" | "single" | "free";
rule: "single" | "all" | "free";
ruleOnRow: "single" | "all" | "free";
onPickRelations: (ids: string[]) => void;
onPickRows: (ids: string[]) => void;
pickedRowIds: string[] | undefined;

View File

@ -11,7 +11,7 @@ declare const _default: (props: import("oak-frontend-base").ReactComponentProps<
claimUrl: string;
qrCodeType: QrCodeType;
multiple: boolean;
rule: "all" | "single" | "free";
ruleOnRow: "all" | "single" | "free";
rule: "single" | "all" | "free";
ruleOnRow: "single" | "all" | "free";
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
export default _default;

11
es/entities/ApplicationPassport.d.ts vendored Normal file
View File

@ -0,0 +1,11 @@
import { Boolean } from 'oak-domain/lib/types/DataType';
import { EntityShape } from 'oak-domain/lib/types/Entity';
import { EntityDesc } from 'oak-domain/lib/types/EntityDesc';
import { Schema as Application } from './Application';
import { Schema as Passport } from './Passport';
export interface Schema extends EntityShape {
application: Application;
passport: Passport;
isDefault: Boolean;
}
export declare const entityDesc: EntityDesc<Schema>;

View File

@ -0,0 +1,13 @@
;
export const entityDesc = {
locales: {
zh_CN: {
name: '应用登录方式',
attr: {
application: '应用',
passport: '登录方式',
isDefault: '是否默认',
},
},
},
};

31
es/entities/Passport.d.ts vendored Normal file
View File

@ -0,0 +1,31 @@
import { Boolean } from 'oak-domain/lib/types/DataType';
import { EntityShape } from 'oak-domain/lib/types/Entity';
import { Schema as System } from './System';
import { EntityDesc } from 'oak-domain/lib/types/EntityDesc';
type Type = 'password' | 'sms' | 'email' | 'wechatWeb' | 'wechatMp' | 'wechatPublic' | 'wechatPublicForWeb' | 'wechatMpForWeb';
type SmsConfig = {
mockSend?: boolean;
templateName?: string;
codeDuration?: number;
};
type EmailConifg = {
smtpUrl: string;
smtpAccount: string;
smtpPassword: string;
};
type PfwConfig = {
appId: string;
};
type MfwConfig = {
appId: string;
};
export interface Schema extends EntityShape {
system: System;
type: Type;
config?: SmsConfig | EmailConifg | PfwConfig | MfwConfig;
enabled: Boolean;
}
export declare const entityDesc: EntityDesc<Schema, '', '', {
type: Schema['type'];
}>;
export {};

40
es/entities/Passport.js Normal file
View File

@ -0,0 +1,40 @@
;
export const entityDesc = {
locales: {
zh_CN: {
name: '登录方式',
attr: {
system: '系统',
type: '登录方式',
config: '登录方式配置',
enabled: '是否启用',
},
v: {
type: {
email: '邮箱',
sms: '短信',
password: '密码',
wechatMp: '小程序',
wechatPublic: '公众号',
wechatWeb: '微信网站',
wechatMpForWeb: '小程序授权',
wechatPublicForWeb: '公众号授权'
},
},
},
},
style: {
color: {
type: {
password: '#00BFFF',
sms: '#F0F8FF',
email: '#FFA07A',
wechatWeb: '#90EE90',
wechatPublic: '#32CD32',
wechatMp: '#3CB371',
wechatMpForWeb: '#006400',
wechatPublicForWeb: '#008000',
}
}
}
};

View File

@ -7,6 +7,7 @@ import { String, Text } from "oak-domain/lib/types/DataType";
import { Style } from "../../types/Style";
import * as System from "../System/Schema";
import * as Domain from "../Domain/Schema";
import * as ApplicationPassport from "../ApplicationPassport/Schema";
import * as ExtraFile from "../ExtraFile/Schema";
import * as Notification from "../Notification/Schema";
import * as SessionMessage from "../SessionMessage/Schema";
@ -90,6 +91,8 @@ export type Schema = EntityShape & {
domainId?: ForeignKey<"domain"> | null;
system: System.Schema;
domain?: Domain.Schema | null;
applicationPassport$application?: Array<ApplicationPassport.Schema>;
applicationPassport$application$$aggr?: AggregationResult<ApplicationPassport.Schema>;
extraFile$application?: Array<ExtraFile.Schema>;
extraFile$application$$aggr?: AggregationResult<ExtraFile.Schema>;
notification$application?: Array<Notification.Schema>;
@ -129,6 +132,7 @@ type AttrFilter = {
style: JsonFilter<Style>;
domainId: Q_StringValue;
domain: Domain.Filter;
applicationPassport$application: ApplicationPassport.Filter & SubQueryPredicateMetadata;
extraFile$application: ExtraFile.Filter & SubQueryPredicateMetadata;
notification$application: Notification.Filter & SubQueryPredicateMetadata;
sessionMessage$application: SessionMessage.Filter & SubQueryPredicateMetadata;
@ -158,6 +162,12 @@ export type Projection = {
style?: number | JsonProjection<Style>;
domainId?: number;
domain?: Domain.Projection;
applicationPassport$application?: ApplicationPassport.Selection & {
$entity: "applicationPassport";
};
applicationPassport$application$$aggr?: ApplicationPassport.Aggregation & {
$entity: "applicationPassport";
};
extraFile$application?: ExtraFile.Selection & {
$entity: "extraFile";
};
@ -288,6 +298,7 @@ export type CreateOperationData = FormCreateData<Omit<OpSchema, "systemId" | "do
domain?: never;
domainId?: ForeignKey<"domain">;
})) & {
applicationPassport$application?: OakOperation<ApplicationPassport.UpdateOperation["action"], Omit<ApplicationPassport.UpdateOperationData, "application" | "applicationId">, Omit<ApplicationPassport.Filter, "application" | "applicationId">> | OakOperation<"create", Omit<ApplicationPassport.CreateOperationData, "application" | "applicationId">[]> | Array<OakOperation<"create", Omit<ApplicationPassport.CreateOperationData, "application" | "applicationId">> | OakOperation<ApplicationPassport.UpdateOperation["action"], Omit<ApplicationPassport.UpdateOperationData, "application" | "applicationId">, Omit<ApplicationPassport.Filter, "application" | "applicationId">>>;
extraFile$application?: OakOperation<ExtraFile.UpdateOperation["action"], Omit<ExtraFile.UpdateOperationData, "application" | "applicationId">, Omit<ExtraFile.Filter, "application" | "applicationId">> | OakOperation<"create", Omit<ExtraFile.CreateOperationData, "application" | "applicationId">[]> | Array<OakOperation<"create", Omit<ExtraFile.CreateOperationData, "application" | "applicationId">> | OakOperation<ExtraFile.UpdateOperation["action"], Omit<ExtraFile.UpdateOperationData, "application" | "applicationId">, Omit<ExtraFile.Filter, "application" | "applicationId">>>;
notification$application?: OakOperation<Notification.UpdateOperation["action"], Omit<Notification.UpdateOperationData, "application" | "applicationId">, Omit<Notification.Filter, "application" | "applicationId">> | OakOperation<"create", Omit<Notification.CreateOperationData, "application" | "applicationId">[]> | Array<OakOperation<"create", Omit<Notification.CreateOperationData, "application" | "applicationId">> | OakOperation<Notification.UpdateOperation["action"], Omit<Notification.UpdateOperationData, "application" | "applicationId">, Omit<Notification.Filter, "application" | "applicationId">>>;
sessionMessage$application?: OakOperation<SessionMessage.UpdateOperation["action"], Omit<SessionMessage.UpdateOperationData, "application" | "applicationId">, Omit<SessionMessage.Filter, "application" | "applicationId">> | OakOperation<"create", Omit<SessionMessage.CreateOperationData, "application" | "applicationId">[]> | Array<OakOperation<"create", Omit<SessionMessage.CreateOperationData, "application" | "applicationId">> | OakOperation<SessionMessage.UpdateOperation["action"], Omit<SessionMessage.UpdateOperationData, "application" | "applicationId">, Omit<SessionMessage.Filter, "application" | "applicationId">>>;
@ -329,6 +340,7 @@ export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "systemId" | "do
domainId?: ForeignKey<"domain"> | null;
})) & {
[k: string]: any;
applicationPassport$application?: OakOperation<ApplicationPassport.UpdateOperation["action"], Omit<ApplicationPassport.UpdateOperationData, "application" | "applicationId">, Omit<ApplicationPassport.Filter, "application" | "applicationId">> | OakOperation<ApplicationPassport.RemoveOperation["action"], Omit<ApplicationPassport.RemoveOperationData, "application" | "applicationId">, Omit<ApplicationPassport.Filter, "application" | "applicationId">> | OakOperation<"create", Omit<ApplicationPassport.CreateOperationData, "application" | "applicationId">[]> | Array<OakOperation<"create", Omit<ApplicationPassport.CreateOperationData, "application" | "applicationId">> | OakOperation<ApplicationPassport.UpdateOperation["action"], Omit<ApplicationPassport.UpdateOperationData, "application" | "applicationId">, Omit<ApplicationPassport.Filter, "application" | "applicationId">> | OakOperation<ApplicationPassport.RemoveOperation["action"], Omit<ApplicationPassport.RemoveOperationData, "application" | "applicationId">, Omit<ApplicationPassport.Filter, "application" | "applicationId">>>;
extraFile$application?: OakOperation<ExtraFile.UpdateOperation["action"], Omit<ExtraFile.UpdateOperationData, "application" | "applicationId">, Omit<ExtraFile.Filter, "application" | "applicationId">> | OakOperation<ExtraFile.RemoveOperation["action"], Omit<ExtraFile.RemoveOperationData, "application" | "applicationId">, Omit<ExtraFile.Filter, "application" | "applicationId">> | OakOperation<"create", Omit<ExtraFile.CreateOperationData, "application" | "applicationId">[]> | Array<OakOperation<"create", Omit<ExtraFile.CreateOperationData, "application" | "applicationId">> | OakOperation<ExtraFile.UpdateOperation["action"], Omit<ExtraFile.UpdateOperationData, "application" | "applicationId">, Omit<ExtraFile.Filter, "application" | "applicationId">> | OakOperation<ExtraFile.RemoveOperation["action"], Omit<ExtraFile.RemoveOperationData, "application" | "applicationId">, Omit<ExtraFile.Filter, "application" | "applicationId">>>;
notification$application?: OakOperation<Notification.UpdateOperation["action"], Omit<Notification.UpdateOperationData, "application" | "applicationId">, Omit<Notification.Filter, "application" | "applicationId">> | OakOperation<Notification.RemoveOperation["action"], Omit<Notification.RemoveOperationData, "application" | "applicationId">, Omit<Notification.Filter, "application" | "applicationId">> | OakOperation<"create", Omit<Notification.CreateOperationData, "application" | "applicationId">[]> | Array<OakOperation<"create", Omit<Notification.CreateOperationData, "application" | "applicationId">> | OakOperation<Notification.UpdateOperation["action"], Omit<Notification.UpdateOperationData, "application" | "applicationId">, Omit<Notification.Filter, "application" | "applicationId">> | OakOperation<Notification.RemoveOperation["action"], Omit<Notification.RemoveOperationData, "application" | "applicationId">, Omit<Notification.Filter, "application" | "applicationId">>>;
sessionMessage$application?: OakOperation<SessionMessage.UpdateOperation["action"], Omit<SessionMessage.UpdateOperationData, "application" | "applicationId">, Omit<SessionMessage.Filter, "application" | "applicationId">> | OakOperation<SessionMessage.RemoveOperation["action"], Omit<SessionMessage.RemoveOperationData, "application" | "applicationId">, Omit<SessionMessage.Filter, "application" | "applicationId">> | OakOperation<"create", Omit<SessionMessage.CreateOperationData, "application" | "applicationId">[]> | Array<OakOperation<"create", Omit<SessionMessage.CreateOperationData, "application" | "applicationId">> | OakOperation<SessionMessage.UpdateOperation["action"], Omit<SessionMessage.UpdateOperationData, "application" | "applicationId">, Omit<SessionMessage.Filter, "application" | "applicationId">> | OakOperation<SessionMessage.RemoveOperation["action"], Omit<SessionMessage.RemoveOperationData, "application" | "applicationId">, Omit<SessionMessage.Filter, "application" | "applicationId">>>;

View File

@ -0,0 +1,160 @@
import { ForeignKey } from "oak-domain/lib/types/DataType";
import { Q_DateValue, Q_BooleanValue, Q_NumberValue, Q_StringValue, NodeId, MakeFilter, ExprOp, ExpressionKey } 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, EntityShape } from "oak-domain/lib/types/Entity";
import { GenericAction } from "oak-domain/lib/actions/action";
import { Boolean } from "oak-domain/lib/types/DataType";
import * as Application from "../Application/Schema";
import * as Passport from "../Passport/Schema";
export type OpSchema = EntityShape & {
applicationId: ForeignKey<"application">;
passportId: ForeignKey<"passport">;
isDefault: Boolean;
};
export type OpAttr = keyof OpSchema;
export type Schema = EntityShape & {
applicationId: ForeignKey<"application">;
passportId: ForeignKey<"passport">;
isDefault: Boolean;
application: Application.Schema;
passport: Passport.Schema;
} & {
[A in ExpressionKey]?: any;
};
type AttrFilter = {
id: Q_StringValue;
$$createAt$$: Q_DateValue;
$$seq$$: Q_NumberValue;
$$updateAt$$: Q_DateValue;
applicationId: Q_StringValue;
application: Application.Filter;
passportId: Q_StringValue;
passport: Passport.Filter;
isDefault: Q_BooleanValue;
};
export type Filter = MakeFilter<AttrFilter & ExprOp<OpAttr | string>>;
export type Projection = {
"#id"?: NodeId;
[k: string]: any;
id?: number;
$$createAt$$?: number;
$$updateAt$$?: number;
$$seq$$?: number;
applicationId?: number;
application?: Application.Projection;
passportId?: number;
passport?: Passport.Projection;
isDefault?: number;
} & Partial<ExprOp<OpAttr | string>>;
type ApplicationPassportIdProjection = OneOf<{
id: number;
}>;
type ApplicationIdProjection = OneOf<{
applicationId: number;
}>;
type PassportIdProjection = OneOf<{
passportId: number;
}>;
export type SortAttr = {
id: number;
} | {
$$createAt$$: number;
} | {
$$seq$$: number;
} | {
$$updateAt$$: number;
} | {
applicationId: number;
} | {
application: Application.SortAttr;
} | {
passportId: number;
} | {
passport: Passport.SortAttr;
} | {
isDefault: number;
} | {
[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, "applicationId" | "passportId">> & (({
applicationId?: never;
application: Application.CreateSingleOperation;
} | {
applicationId: ForeignKey<"application">;
application?: Application.UpdateOperation;
} | {
application?: never;
applicationId: ForeignKey<"application">;
}) & ({
passportId?: never;
passport: Passport.CreateSingleOperation;
} | {
passportId: ForeignKey<"passport">;
passport?: Passport.UpdateOperation;
} | {
passport?: never;
passportId: ForeignKey<"passport">;
}));
export type CreateSingleOperation = OakOperation<"create", CreateOperationData>;
export type CreateMultipleOperation = OakOperation<"create", Array<CreateOperationData>>;
export type CreateOperation = CreateSingleOperation | CreateMultipleOperation;
export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "applicationId" | "passportId">> & (({
application?: Application.CreateSingleOperation;
applicationId?: never;
} | {
application?: Application.UpdateOperation;
applicationId?: never;
} | {
application?: Application.RemoveOperation;
applicationId?: never;
} | {
application?: never;
applicationId?: ForeignKey<"application">;
}) & ({
passport?: Passport.CreateSingleOperation;
passportId?: never;
} | {
passport?: Passport.UpdateOperation;
passportId?: never;
} | {
passport?: Passport.RemoveOperation;
passportId?: never;
} | {
passport?: never;
passportId?: ForeignKey<"passport">;
})) & {
[k: string]: any;
};
export type UpdateOperation = OakOperation<"update" | string, UpdateOperationData, Filter, Sorter>;
export type RemoveOperationData = {} & (({
application?: Application.UpdateOperation | Application.RemoveOperation;
}) & ({
passport?: Passport.UpdateOperation | Passport.RemoveOperation;
}));
export type RemoveOperation = OakOperation<"remove", RemoveOperationData, Filter, Sorter>;
export type Operation = CreateOperation | UpdateOperation | RemoveOperation;
export type ApplicationIdSubQuery = Selection<ApplicationIdProjection>;
export type PassportIdSubQuery = Selection<PassportIdProjection>;
export type ApplicationPassportIdSubQuery = Selection<ApplicationPassportIdProjection>;
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 {};

View File

@ -0,0 +1 @@
export {};

View File

@ -0,0 +1,3 @@
import { StorageDesc } from "oak-domain/lib/types/Storage";
import { OpSchema } from "./Schema";
export declare const desc: StorageDesc<OpSchema>;

View File

@ -0,0 +1,21 @@
import { genericActions as actions } from "oak-domain/lib/actions/action";
export const desc = {
attributes: {
applicationId: {
notNull: true,
type: "ref",
ref: "application"
},
passportId: {
notNull: true,
type: "ref",
ref: "passport"
},
isDefault: {
notNull: true,
type: "boolean"
}
},
actionType: "crud",
actions
};

View File

@ -0,0 +1 @@
{ "name": "应用登录方式", "attr": { "application": "应用", "passport": "登录方式", "isDefault": "是否默认" } }

View File

@ -13,6 +13,7 @@ import { EntityDef as UserEntityGrant } from "./UserEntityGrant/Schema";
import { EntityDef as UserRelation } from "./UserRelation/Schema";
import { EntityDef as Address } from "./Address/Schema";
import { EntityDef as Application } from "./Application/Schema";
import { EntityDef as ApplicationPassport } from "./ApplicationPassport/Schema";
import { EntityDef as Area } from "./Area/Schema";
import { EntityDef as Article } from "./Article/Schema";
import { EntityDef as ArticleMenu } from "./ArticleMenu/Schema";
@ -30,6 +31,7 @@ import { EntityDef as MessageTypeTemplate } from "./MessageTypeTemplate/Schema";
import { EntityDef as Mobile } from "./Mobile/Schema";
import { EntityDef as Notification } from "./Notification/Schema";
import { EntityDef as Parasite } from "./Parasite/Schema";
import { EntityDef as Passport } from "./Passport/Schema";
import { EntityDef as Platform } from "./Platform/Schema";
import { EntityDef as ReadRemark } from "./ReadRemark/Schema";
import { EntityDef as Session } from "./Session/Schema";
@ -68,6 +70,7 @@ export type EntityDict = {
userRelation: UserRelation;
address: Address;
application: Application;
applicationPassport: ApplicationPassport;
area: Area;
article: Article;
articleMenu: ArticleMenu;
@ -85,6 +88,7 @@ export type EntityDict = {
mobile: Mobile;
notification: Notification;
parasite: Parasite;
passport: Passport;
platform: Platform;
readRemark: ReadRemark;
session: Session;

161
es/oak-app-domain/Passport/Schema.d.ts vendored Normal file
View File

@ -0,0 +1,161 @@
import { ForeignKey, JsonProjection } from "oak-domain/lib/types/DataType";
import { Q_DateValue, Q_BooleanValue, Q_NumberValue, Q_StringValue, Q_EnumValue, NodeId, MakeFilter, ExprOp, ExpressionKey, JsonFilter, 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 { Boolean } from "oak-domain/lib/types/DataType";
import * as System from "../System/Schema";
import * as ApplicationPassport from "../ApplicationPassport/Schema";
type Type = "password" | "sms" | "email" | "wechatWeb" | "wechatMp" | "wechatPublic" | "wechatPublicForWeb" | "wechatMpForWeb";
type SmsConfig = {
mockSend?: boolean;
templateName?: string;
codeDuration?: number;
};
type EmailConifg = {
smtpUrl: string;
smtpAccount: string;
smtpPassword: string;
};
type PfwConfig = {
appId: string;
};
type MfwConfig = {
appId: string;
};
export type OpSchema = EntityShape & {
systemId: ForeignKey<"system">;
type: Type;
config?: (SmsConfig | EmailConifg | PfwConfig | MfwConfig) | null;
enabled: Boolean;
};
export type OpAttr = keyof OpSchema;
export type Schema = EntityShape & {
systemId: ForeignKey<"system">;
type: Type;
config?: (SmsConfig | EmailConifg | PfwConfig | MfwConfig) | null;
enabled: Boolean;
system: System.Schema;
applicationPassport$passport?: Array<ApplicationPassport.Schema>;
applicationPassport$passport$$aggr?: AggregationResult<ApplicationPassport.Schema>;
} & {
[A in ExpressionKey]?: any;
};
type AttrFilter = {
id: Q_StringValue;
$$createAt$$: Q_DateValue;
$$seq$$: Q_NumberValue;
$$updateAt$$: Q_DateValue;
systemId: Q_StringValue;
system: System.Filter;
type: Q_EnumValue<Type>;
config: JsonFilter<SmsConfig | EmailConifg | PfwConfig | MfwConfig>;
enabled: Q_BooleanValue;
applicationPassport$passport: ApplicationPassport.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;
systemId?: number;
system?: System.Projection;
type?: number;
config?: number | JsonProjection<SmsConfig | EmailConifg | PfwConfig | MfwConfig>;
enabled?: number;
applicationPassport$passport?: ApplicationPassport.Selection & {
$entity: "applicationPassport";
};
applicationPassport$passport$$aggr?: ApplicationPassport.Aggregation & {
$entity: "applicationPassport";
};
} & Partial<ExprOp<OpAttr | string>>;
type PassportIdProjection = OneOf<{
id: number;
}>;
type SystemIdProjection = OneOf<{
systemId: number;
}>;
export type SortAttr = {
id: number;
} | {
$$createAt$$: number;
} | {
$$seq$$: number;
} | {
$$updateAt$$: number;
} | {
systemId: number;
} | {
system: System.SortAttr;
} | {
type: number;
} | {
enabled: number;
} | {
[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, "systemId">> & (({
systemId?: never;
system: System.CreateSingleOperation;
} | {
systemId: ForeignKey<"system">;
system?: System.UpdateOperation;
} | {
system?: never;
systemId: ForeignKey<"system">;
})) & {
applicationPassport$passport?: OakOperation<ApplicationPassport.UpdateOperation["action"], Omit<ApplicationPassport.UpdateOperationData, "passport" | "passportId">, Omit<ApplicationPassport.Filter, "passport" | "passportId">> | OakOperation<"create", Omit<ApplicationPassport.CreateOperationData, "passport" | "passportId">[]> | Array<OakOperation<"create", Omit<ApplicationPassport.CreateOperationData, "passport" | "passportId">> | OakOperation<ApplicationPassport.UpdateOperation["action"], Omit<ApplicationPassport.UpdateOperationData, "passport" | "passportId">, Omit<ApplicationPassport.Filter, "passport" | "passportId">>>;
};
export type CreateSingleOperation = OakOperation<"create", CreateOperationData>;
export type CreateMultipleOperation = OakOperation<"create", Array<CreateOperationData>>;
export type CreateOperation = CreateSingleOperation | CreateMultipleOperation;
export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "systemId">> & (({
system?: System.CreateSingleOperation;
systemId?: never;
} | {
system?: System.UpdateOperation;
systemId?: never;
} | {
system?: System.RemoveOperation;
systemId?: never;
} | {
system?: never;
systemId?: ForeignKey<"system">;
})) & {
[k: string]: any;
applicationPassport$passport?: OakOperation<ApplicationPassport.UpdateOperation["action"], Omit<ApplicationPassport.UpdateOperationData, "passport" | "passportId">, Omit<ApplicationPassport.Filter, "passport" | "passportId">> | OakOperation<ApplicationPassport.RemoveOperation["action"], Omit<ApplicationPassport.RemoveOperationData, "passport" | "passportId">, Omit<ApplicationPassport.Filter, "passport" | "passportId">> | OakOperation<"create", Omit<ApplicationPassport.CreateOperationData, "passport" | "passportId">[]> | Array<OakOperation<"create", Omit<ApplicationPassport.CreateOperationData, "passport" | "passportId">> | OakOperation<ApplicationPassport.UpdateOperation["action"], Omit<ApplicationPassport.UpdateOperationData, "passport" | "passportId">, Omit<ApplicationPassport.Filter, "passport" | "passportId">> | OakOperation<ApplicationPassport.RemoveOperation["action"], Omit<ApplicationPassport.RemoveOperationData, "passport" | "passportId">, Omit<ApplicationPassport.Filter, "passport" | "passportId">>>;
};
export type UpdateOperation = OakOperation<"update" | string, UpdateOperationData, Filter, Sorter>;
export type RemoveOperationData = {} & (({
system?: System.UpdateOperation | System.RemoveOperation;
}));
export type RemoveOperation = OakOperation<"remove", RemoveOperationData, Filter, Sorter>;
export type Operation = CreateOperation | UpdateOperation | RemoveOperation;
export type SystemIdSubQuery = Selection<SystemIdProjection>;
export type PassportIdSubQuery = Selection<PassportIdProjection>;
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 {};

View File

@ -0,0 +1 @@
export {};

View File

@ -0,0 +1,3 @@
import { StorageDesc } from "oak-domain/lib/types/Storage";
import { OpSchema } from "./Schema";
export declare const desc: StorageDesc<OpSchema>;

View File

@ -0,0 +1,24 @@
import { genericActions as actions } from "oak-domain/lib/actions/action";
export const desc = {
attributes: {
systemId: {
notNull: true,
type: "ref",
ref: "system"
},
type: {
notNull: true,
type: "enum",
enumeration: ["password", "sms", "email", "wechatWeb", "wechatMp", "wechatPublic", "wechatPublicForWeb", "wechatMpForWeb"]
},
config: {
type: "object"
},
enabled: {
notNull: true,
type: "boolean"
}
},
actionType: "crud",
actions
};

3
es/oak-app-domain/Passport/Style.d.ts vendored Normal file
View File

@ -0,0 +1,3 @@
import { EntityDef } from "./Schema";
import { StyleDef } from "oak-domain/lib/types/Style";
export declare const style: StyleDef<EntityDef["OpSchema"], EntityDef["Action"]>;

View File

@ -0,0 +1,14 @@
export const style = {
color: {
type: {
password: '#00BFFF',
sms: '#F0F8FF',
email: '#FFA07A',
wechatWeb: '#90EE90',
wechatPublic: '#32CD32',
wechatMp: '#3CB371',
wechatMpForWeb: '#006400',
wechatPublicForWeb: '#008000',
}
}
};

View File

@ -0,0 +1 @@
{ "name": "登录方式", "attr": { "system": "系统", "type": "登录方式", "config": "登录方式配置", "enabled": "是否启用" }, "v": { "type": { "email": "邮箱", "sms": "短信", "password": "密码", "wechatMp": "小程序", "wechatPublic": "公众号", "wechatWeb": "微信网站", "wechatMpForWeb": "小程序授权", "wechatPublicForWeb": "公众号授权" } } }

View File

@ -13,6 +13,7 @@ import { desc as userEntityGrantDesc } from "./UserEntityGrant/Storage";
import { desc as userRelationDesc } from "./UserRelation/Storage";
import { desc as addressDesc } from "./Address/Storage";
import { desc as applicationDesc } from "./Application/Storage";
import { desc as applicationPassportDesc } from "./ApplicationPassport/Storage";
import { desc as areaDesc } from "./Area/Storage";
import { desc as articleDesc } from "./Article/Storage";
import { desc as articleMenuDesc } from "./ArticleMenu/Storage";
@ -30,6 +31,7 @@ import { desc as messageTypeTemplateDesc } from "./MessageTypeTemplate/Storage";
import { desc as mobileDesc } from "./Mobile/Storage";
import { desc as notificationDesc } from "./Notification/Storage";
import { desc as parasiteDesc } from "./Parasite/Storage";
import { desc as passportDesc } from "./Passport/Storage";
import { desc as platformDesc } from "./Platform/Storage";
import { desc as readRemarkDesc } from "./ReadRemark/Storage";
import { desc as sessionDesc } from "./Session/Storage";
@ -68,6 +70,7 @@ export const storageSchema = {
userRelation: userRelationDesc,
address: addressDesc,
application: applicationDesc,
applicationPassport: applicationPassportDesc,
area: areaDesc,
article: articleDesc,
articleMenu: articleMenuDesc,
@ -85,6 +88,7 @@ export const storageSchema = {
mobile: mobileDesc,
notification: notificationDesc,
parasite: parasiteDesc,
passport: passportDesc,
platform: platformDesc,
readRemark: readRemarkDesc,
session: sessionDesc,

View File

@ -11,6 +11,7 @@ import { style as message } from "./Message/Style";
import { style as mobile } from "./Mobile/Style";
import { style as notification } from "./Notification/Style";
import { style as parasite } from "./Parasite/Style";
import { style as passport } from "./Passport/Style";
import { style as smsTemplate } from "./SmsTemplate/Style";
import { style as toDo } from "./ToDo/Style";
import { style as token } from "./Token/Style";
@ -36,6 +37,7 @@ export const styleDict = {
mobile,
notification,
parasite,
passport,
smsTemplate,
toDo,
token,

View File

@ -10,6 +10,7 @@ import * as Platform from "../Platform/Schema";
import * as Application from "../Application/Schema";
import * as Domain from "../Domain/Schema";
import * as MessageSystem from "../MessageSystem/Schema";
import * as Passport from "../Passport/Schema";
import * as SmsTemplate from "../SmsTemplate/Schema";
import * as UserSystem from "../UserSystem/Schema";
export type OpSchema = EntityShape & {
@ -41,6 +42,8 @@ export type Schema = EntityShape & {
domain$system$$aggr?: AggregationResult<Domain.Schema>;
messageSystem$system?: Array<MessageSystem.Schema>;
messageSystem$system$$aggr?: AggregationResult<MessageSystem.Schema>;
passport$system?: Array<Passport.Schema>;
passport$system$$aggr?: AggregationResult<Passport.Schema>;
smsTemplate$system?: Array<SmsTemplate.Schema>;
smsTemplate$system$$aggr?: AggregationResult<SmsTemplate.Schema>;
userSystem$system?: Array<UserSystem.Schema>;
@ -66,6 +69,7 @@ type AttrFilter = {
application$system: Application.Filter & SubQueryPredicateMetadata;
domain$system: Domain.Filter & SubQueryPredicateMetadata;
messageSystem$system: MessageSystem.Filter & SubQueryPredicateMetadata;
passport$system: Passport.Filter & SubQueryPredicateMetadata;
smsTemplate$system: SmsTemplate.Filter & SubQueryPredicateMetadata;
userSystem$system: UserSystem.Filter & SubQueryPredicateMetadata;
};
@ -105,6 +109,12 @@ export type Projection = {
messageSystem$system$$aggr?: MessageSystem.Aggregation & {
$entity: "messageSystem";
};
passport$system?: Passport.Selection & {
$entity: "passport";
};
passport$system$$aggr?: Passport.Aggregation & {
$entity: "passport";
};
smsTemplate$system?: SmsTemplate.Selection & {
$entity: "smsTemplate";
};
@ -180,6 +190,7 @@ export type CreateOperationData = FormCreateData<Omit<OpSchema, "entity" | "enti
application$system?: OakOperation<Application.UpdateOperation["action"], Omit<Application.UpdateOperationData, "system" | "systemId">, Omit<Application.Filter, "system" | "systemId">> | OakOperation<"create", Omit<Application.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<Application.CreateOperationData, "system" | "systemId">> | OakOperation<Application.UpdateOperation["action"], Omit<Application.UpdateOperationData, "system" | "systemId">, Omit<Application.Filter, "system" | "systemId">>>;
domain$system?: OakOperation<Domain.UpdateOperation["action"], Omit<Domain.UpdateOperationData, "system" | "systemId">, Omit<Domain.Filter, "system" | "systemId">> | OakOperation<"create", Omit<Domain.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<Domain.CreateOperationData, "system" | "systemId">> | OakOperation<Domain.UpdateOperation["action"], Omit<Domain.UpdateOperationData, "system" | "systemId">, Omit<Domain.Filter, "system" | "systemId">>>;
messageSystem$system?: OakOperation<MessageSystem.UpdateOperation["action"], Omit<MessageSystem.UpdateOperationData, "system" | "systemId">, Omit<MessageSystem.Filter, "system" | "systemId">> | OakOperation<"create", Omit<MessageSystem.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<MessageSystem.CreateOperationData, "system" | "systemId">> | OakOperation<MessageSystem.UpdateOperation["action"], Omit<MessageSystem.UpdateOperationData, "system" | "systemId">, Omit<MessageSystem.Filter, "system" | "systemId">>>;
passport$system?: OakOperation<Passport.UpdateOperation["action"], Omit<Passport.UpdateOperationData, "system" | "systemId">, Omit<Passport.Filter, "system" | "systemId">> | OakOperation<"create", Omit<Passport.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<Passport.CreateOperationData, "system" | "systemId">> | OakOperation<Passport.UpdateOperation["action"], Omit<Passport.UpdateOperationData, "system" | "systemId">, Omit<Passport.Filter, "system" | "systemId">>>;
smsTemplate$system?: OakOperation<SmsTemplate.UpdateOperation["action"], Omit<SmsTemplate.UpdateOperationData, "system" | "systemId">, Omit<SmsTemplate.Filter, "system" | "systemId">> | OakOperation<"create", Omit<SmsTemplate.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<SmsTemplate.CreateOperationData, "system" | "systemId">> | OakOperation<SmsTemplate.UpdateOperation["action"], Omit<SmsTemplate.UpdateOperationData, "system" | "systemId">, Omit<SmsTemplate.Filter, "system" | "systemId">>>;
userSystem$system?: OakOperation<UserSystem.UpdateOperation["action"], Omit<UserSystem.UpdateOperationData, "system" | "systemId">, Omit<UserSystem.Filter, "system" | "systemId">> | OakOperation<"create", Omit<UserSystem.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<UserSystem.CreateOperationData, "system" | "systemId">> | OakOperation<UserSystem.UpdateOperation["action"], Omit<UserSystem.UpdateOperationData, "system" | "systemId">, Omit<UserSystem.Filter, "system" | "systemId">>>;
};
@ -203,6 +214,7 @@ export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "platformId">> &
application$system?: OakOperation<Application.UpdateOperation["action"], Omit<Application.UpdateOperationData, "system" | "systemId">, Omit<Application.Filter, "system" | "systemId">> | OakOperation<Application.RemoveOperation["action"], Omit<Application.RemoveOperationData, "system" | "systemId">, Omit<Application.Filter, "system" | "systemId">> | OakOperation<"create", Omit<Application.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<Application.CreateOperationData, "system" | "systemId">> | OakOperation<Application.UpdateOperation["action"], Omit<Application.UpdateOperationData, "system" | "systemId">, Omit<Application.Filter, "system" | "systemId">> | OakOperation<Application.RemoveOperation["action"], Omit<Application.RemoveOperationData, "system" | "systemId">, Omit<Application.Filter, "system" | "systemId">>>;
domain$system?: OakOperation<Domain.UpdateOperation["action"], Omit<Domain.UpdateOperationData, "system" | "systemId">, Omit<Domain.Filter, "system" | "systemId">> | OakOperation<Domain.RemoveOperation["action"], Omit<Domain.RemoveOperationData, "system" | "systemId">, Omit<Domain.Filter, "system" | "systemId">> | OakOperation<"create", Omit<Domain.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<Domain.CreateOperationData, "system" | "systemId">> | OakOperation<Domain.UpdateOperation["action"], Omit<Domain.UpdateOperationData, "system" | "systemId">, Omit<Domain.Filter, "system" | "systemId">> | OakOperation<Domain.RemoveOperation["action"], Omit<Domain.RemoveOperationData, "system" | "systemId">, Omit<Domain.Filter, "system" | "systemId">>>;
messageSystem$system?: OakOperation<MessageSystem.UpdateOperation["action"], Omit<MessageSystem.UpdateOperationData, "system" | "systemId">, Omit<MessageSystem.Filter, "system" | "systemId">> | OakOperation<MessageSystem.RemoveOperation["action"], Omit<MessageSystem.RemoveOperationData, "system" | "systemId">, Omit<MessageSystem.Filter, "system" | "systemId">> | OakOperation<"create", Omit<MessageSystem.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<MessageSystem.CreateOperationData, "system" | "systemId">> | OakOperation<MessageSystem.UpdateOperation["action"], Omit<MessageSystem.UpdateOperationData, "system" | "systemId">, Omit<MessageSystem.Filter, "system" | "systemId">> | OakOperation<MessageSystem.RemoveOperation["action"], Omit<MessageSystem.RemoveOperationData, "system" | "systemId">, Omit<MessageSystem.Filter, "system" | "systemId">>>;
passport$system?: OakOperation<Passport.UpdateOperation["action"], Omit<Passport.UpdateOperationData, "system" | "systemId">, Omit<Passport.Filter, "system" | "systemId">> | OakOperation<Passport.RemoveOperation["action"], Omit<Passport.RemoveOperationData, "system" | "systemId">, Omit<Passport.Filter, "system" | "systemId">> | OakOperation<"create", Omit<Passport.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<Passport.CreateOperationData, "system" | "systemId">> | OakOperation<Passport.UpdateOperation["action"], Omit<Passport.UpdateOperationData, "system" | "systemId">, Omit<Passport.Filter, "system" | "systemId">> | OakOperation<Passport.RemoveOperation["action"], Omit<Passport.RemoveOperationData, "system" | "systemId">, Omit<Passport.Filter, "system" | "systemId">>>;
smsTemplate$system?: OakOperation<SmsTemplate.UpdateOperation["action"], Omit<SmsTemplate.UpdateOperationData, "system" | "systemId">, Omit<SmsTemplate.Filter, "system" | "systemId">> | OakOperation<SmsTemplate.RemoveOperation["action"], Omit<SmsTemplate.RemoveOperationData, "system" | "systemId">, Omit<SmsTemplate.Filter, "system" | "systemId">> | OakOperation<"create", Omit<SmsTemplate.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<SmsTemplate.CreateOperationData, "system" | "systemId">> | OakOperation<SmsTemplate.UpdateOperation["action"], Omit<SmsTemplate.UpdateOperationData, "system" | "systemId">, Omit<SmsTemplate.Filter, "system" | "systemId">> | OakOperation<SmsTemplate.RemoveOperation["action"], Omit<SmsTemplate.RemoveOperationData, "system" | "systemId">, Omit<SmsTemplate.Filter, "system" | "systemId">>>;
userSystem$system?: OakOperation<UserSystem.UpdateOperation["action"], Omit<UserSystem.UpdateOperationData, "system" | "systemId">, Omit<UserSystem.Filter, "system" | "systemId">> | OakOperation<UserSystem.RemoveOperation["action"], Omit<UserSystem.RemoveOperationData, "system" | "systemId">, Omit<UserSystem.Filter, "system" | "systemId">> | OakOperation<"create", Omit<UserSystem.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<UserSystem.CreateOperationData, "system" | "systemId">> | OakOperation<UserSystem.UpdateOperation["action"], Omit<UserSystem.UpdateOperationData, "system" | "systemId">, Omit<UserSystem.Filter, "system" | "systemId">> | OakOperation<UserSystem.RemoveOperation["action"], Omit<UserSystem.RemoveOperationData, "system" | "systemId">, Omit<UserSystem.Filter, "system" | "systemId">>>;
};

View File

@ -13,6 +13,7 @@ import * as UserEntityGrant from "./UserEntityGrant/Schema";
import * as UserRelation from "./UserRelation/Schema";
import * as Address from "./Address/Schema";
import * as Application from "./Application/Schema";
import * as ApplicationPassport from "./ApplicationPassport/Schema";
import * as Area from "./Area/Schema";
import * as Article from "./Article/Schema";
import * as ArticleMenu from "./ArticleMenu/Schema";
@ -30,6 +31,7 @@ import * as MessageTypeTemplate from "./MessageTypeTemplate/Schema";
import * as Mobile from "./Mobile/Schema";
import * as Notification from "./Notification/Schema";
import * as Parasite from "./Parasite/Schema";
import * as Passport from "./Passport/Schema";
import * as Platform from "./Platform/Schema";
import * as ReadRemark from "./ReadRemark/Schema";
import * as Session from "./Session/Schema";
@ -193,7 +195,9 @@ export type AddressIdSubQuery = {
}) | any;
};
export type ApplicationIdSubQuery = {
[K in "$in" | "$nin"]?: (ExtraFile.ApplicationIdSubQuery & {
[K in "$in" | "$nin"]?: (ApplicationPassport.ApplicationIdSubQuery & {
entity: "applicationPassport";
}) | (ExtraFile.ApplicationIdSubQuery & {
entity: "extraFile";
}) | (Notification.ApplicationIdSubQuery & {
entity: "notification";
@ -219,6 +223,11 @@ export type ApplicationIdSubQuery = {
entity: "application";
}) | any;
};
export type ApplicationPassportIdSubQuery = {
[K in "$in" | "$nin"]?: (ApplicationPassport.ApplicationPassportIdSubQuery & {
entity: "applicationPassport";
}) | any;
};
export type AreaIdSubQuery = {
[K in "$in" | "$nin"]?: (Address.AreaIdSubQuery & {
entity: "address";
@ -334,6 +343,13 @@ export type ParasiteIdSubQuery = {
entity: "parasite";
}) | any;
};
export type PassportIdSubQuery = {
[K in "$in" | "$nin"]?: (ApplicationPassport.PassportIdSubQuery & {
entity: "applicationPassport";
}) | (Passport.PassportIdSubQuery & {
entity: "passport";
}) | any;
};
export type PlatformIdSubQuery = {
[K in "$in" | "$nin"]?: (Message.PlatformIdSubQuery & {
entity: "message";
@ -406,6 +422,8 @@ export type SystemIdSubQuery = {
entity: "domain";
}) | (MessageSystem.SystemIdSubQuery & {
entity: "messageSystem";
}) | (Passport.SystemIdSubQuery & {
entity: "passport";
}) | (SmsTemplate.SystemIdSubQuery & {
entity: "smsTemplate";
}) | (UserSystem.SystemIdSubQuery & {

View File

@ -66,5 +66,23 @@ const triggers = [
return 1;
}
},
{
name: '删除application前将关联的passport删除',
entity: 'application',
action: 'remove',
when: 'before',
fn: async ({ operation }, context, option) => {
const { filter } = operation;
await context.operate('applicationPassport', {
id: await generateNewIdAsync(),
action: 'remove',
data: {},
filter: {
application: filter,
},
}, option);
return 1;
}
},
];
export default triggers;

View File

@ -1,2 +1,2 @@
declare const _default: (import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BRC<import("../oak-app-domain").EntityDict>>)[];
declare const _default: (import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "system", import("..").BRC<import("../oak-app-domain").EntityDict>>)[];
export default _default;

View File

@ -14,6 +14,7 @@ import sessionMessageTriggers from './sessionMessage';
import wechatMenuTriggers from './wechatMenu';
import wechatPublicTag from './wechatPublicTag';
import wechatMpJump from './wechatMpJump';
import systemTriggers from './system';
// import accountTriggers from './account';
export default [
// ...accountTriggers,
@ -33,4 +34,5 @@ export default [
...wechatMenuTriggers,
...wechatPublicTag,
...wechatMpJump,
...systemTriggers,
];

5
es/triggers/system.d.ts vendored Normal file
View File

@ -0,0 +1,5 @@
import { Trigger } from 'oak-domain/lib/types/Trigger';
import { EntityDict } from '../oak-app-domain/EntityDict';
import { BRC } from '../types/RuntimeCxt';
declare const triggers: Trigger<EntityDict, 'system', BRC<EntityDict>>[];
export default triggers;

45
es/triggers/system.js Normal file
View File

@ -0,0 +1,45 @@
import { generateNewIdAsync } from 'oak-domain/lib/utils/uuid';
import { desc } from '../oak-app-domain/Passport/Storage';
import { assert } from 'oak-domain/lib/utils/assert';
const { attributes: { type: passportType } } = desc;
const triggers = [
{
name: '添加system时添加相应的passport',
entity: 'system',
action: 'create',
when: 'before',
fn: async ({ operation }) => {
const { data } = operation;
assert(!(data instanceof Array));
data.passport$system = await Promise.all(passportType.enumeration.map(async (type) => ({
id: await generateNewIdAsync(),
action: 'create',
data: {
id: await generateNewIdAsync(),
type,
enabled: false,
}
})));
return 1;
}
},
{
name: '当system删除前删除相关的passports',
entity: 'system',
action: 'remove',
when: 'before',
fn: async ({ operation }, context, option) => {
const { filter } = operation;
await context.operate('passport', {
id: await generateNewIdAsync(),
action: 'remove',
data: {},
filter: {
system: filter,
},
}, option);
return 1;
},
},
];
export default triggers;

11
lib/entities/ApplicationPassport.d.ts vendored Normal file
View File

@ -0,0 +1,11 @@
import { Boolean } from 'oak-domain/lib/types/DataType';
import { EntityShape } from 'oak-domain/lib/types/Entity';
import { EntityDesc } from 'oak-domain/lib/types/EntityDesc';
import { Schema as Application } from './Application';
import { Schema as Passport } from './Passport';
export interface Schema extends EntityShape {
application: Application;
passport: Passport;
isDefault: Boolean;
}
export declare const entityDesc: EntityDesc<Schema>;

View File

@ -0,0 +1,16 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.entityDesc = void 0;
;
exports.entityDesc = {
locales: {
zh_CN: {
name: '应用登录方式',
attr: {
application: '应用',
passport: '登录方式',
isDefault: '是否默认',
},
},
},
};

31
lib/entities/Passport.d.ts vendored Normal file
View File

@ -0,0 +1,31 @@
import { Boolean } from 'oak-domain/lib/types/DataType';
import { EntityShape } from 'oak-domain/lib/types/Entity';
import { Schema as System } from './System';
import { EntityDesc } from 'oak-domain/lib/types/EntityDesc';
type Type = 'password' | 'sms' | 'email' | 'wechatWeb' | 'wechatMp' | 'wechatPublic' | 'wechatPublicForWeb' | 'wechatMpForWeb';
type SmsConfig = {
mockSend?: boolean;
templateName?: string;
codeDuration?: number;
};
type EmailConifg = {
smtpUrl: string;
smtpAccount: string;
smtpPassword: string;
};
type PfwConfig = {
appId: string;
};
type MfwConfig = {
appId: string;
};
export interface Schema extends EntityShape {
system: System;
type: Type;
config?: SmsConfig | EmailConifg | PfwConfig | MfwConfig;
enabled: Boolean;
}
export declare const entityDesc: EntityDesc<Schema, '', '', {
type: Schema['type'];
}>;
export {};

43
lib/entities/Passport.js Normal file
View File

@ -0,0 +1,43 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.entityDesc = void 0;
;
exports.entityDesc = {
locales: {
zh_CN: {
name: '登录方式',
attr: {
system: '系统',
type: '登录方式',
config: '登录方式配置',
enabled: '是否启用',
},
v: {
type: {
email: '邮箱',
sms: '短信',
password: '密码',
wechatMp: '小程序',
wechatPublic: '公众号',
wechatWeb: '微信网站',
wechatMpForWeb: '小程序授权',
wechatPublicForWeb: '公众号授权'
},
},
},
},
style: {
color: {
type: {
password: '#00BFFF',
sms: '#F0F8FF',
email: '#FFA07A',
wechatWeb: '#90EE90',
wechatPublic: '#32CD32',
wechatMp: '#3CB371',
wechatMpForWeb: '#006400',
wechatPublicForWeb: '#008000',
}
}
}
};

View File

@ -7,6 +7,7 @@ import { String, Text } from "oak-domain/lib/types/DataType";
import { Style } from "../../types/Style";
import * as System from "../System/Schema";
import * as Domain from "../Domain/Schema";
import * as ApplicationPassport from "../ApplicationPassport/Schema";
import * as ExtraFile from "../ExtraFile/Schema";
import * as Notification from "../Notification/Schema";
import * as SessionMessage from "../SessionMessage/Schema";
@ -90,6 +91,8 @@ export type Schema = EntityShape & {
domainId?: ForeignKey<"domain"> | null;
system: System.Schema;
domain?: Domain.Schema | null;
applicationPassport$application?: Array<ApplicationPassport.Schema>;
applicationPassport$application$$aggr?: AggregationResult<ApplicationPassport.Schema>;
extraFile$application?: Array<ExtraFile.Schema>;
extraFile$application$$aggr?: AggregationResult<ExtraFile.Schema>;
notification$application?: Array<Notification.Schema>;
@ -129,6 +132,7 @@ type AttrFilter = {
style: JsonFilter<Style>;
domainId: Q_StringValue;
domain: Domain.Filter;
applicationPassport$application: ApplicationPassport.Filter & SubQueryPredicateMetadata;
extraFile$application: ExtraFile.Filter & SubQueryPredicateMetadata;
notification$application: Notification.Filter & SubQueryPredicateMetadata;
sessionMessage$application: SessionMessage.Filter & SubQueryPredicateMetadata;
@ -158,6 +162,12 @@ export type Projection = {
style?: number | JsonProjection<Style>;
domainId?: number;
domain?: Domain.Projection;
applicationPassport$application?: ApplicationPassport.Selection & {
$entity: "applicationPassport";
};
applicationPassport$application$$aggr?: ApplicationPassport.Aggregation & {
$entity: "applicationPassport";
};
extraFile$application?: ExtraFile.Selection & {
$entity: "extraFile";
};
@ -288,6 +298,7 @@ export type CreateOperationData = FormCreateData<Omit<OpSchema, "systemId" | "do
domain?: never;
domainId?: ForeignKey<"domain">;
})) & {
applicationPassport$application?: OakOperation<ApplicationPassport.UpdateOperation["action"], Omit<ApplicationPassport.UpdateOperationData, "application" | "applicationId">, Omit<ApplicationPassport.Filter, "application" | "applicationId">> | OakOperation<"create", Omit<ApplicationPassport.CreateOperationData, "application" | "applicationId">[]> | Array<OakOperation<"create", Omit<ApplicationPassport.CreateOperationData, "application" | "applicationId">> | OakOperation<ApplicationPassport.UpdateOperation["action"], Omit<ApplicationPassport.UpdateOperationData, "application" | "applicationId">, Omit<ApplicationPassport.Filter, "application" | "applicationId">>>;
extraFile$application?: OakOperation<ExtraFile.UpdateOperation["action"], Omit<ExtraFile.UpdateOperationData, "application" | "applicationId">, Omit<ExtraFile.Filter, "application" | "applicationId">> | OakOperation<"create", Omit<ExtraFile.CreateOperationData, "application" | "applicationId">[]> | Array<OakOperation<"create", Omit<ExtraFile.CreateOperationData, "application" | "applicationId">> | OakOperation<ExtraFile.UpdateOperation["action"], Omit<ExtraFile.UpdateOperationData, "application" | "applicationId">, Omit<ExtraFile.Filter, "application" | "applicationId">>>;
notification$application?: OakOperation<Notification.UpdateOperation["action"], Omit<Notification.UpdateOperationData, "application" | "applicationId">, Omit<Notification.Filter, "application" | "applicationId">> | OakOperation<"create", Omit<Notification.CreateOperationData, "application" | "applicationId">[]> | Array<OakOperation<"create", Omit<Notification.CreateOperationData, "application" | "applicationId">> | OakOperation<Notification.UpdateOperation["action"], Omit<Notification.UpdateOperationData, "application" | "applicationId">, Omit<Notification.Filter, "application" | "applicationId">>>;
sessionMessage$application?: OakOperation<SessionMessage.UpdateOperation["action"], Omit<SessionMessage.UpdateOperationData, "application" | "applicationId">, Omit<SessionMessage.Filter, "application" | "applicationId">> | OakOperation<"create", Omit<SessionMessage.CreateOperationData, "application" | "applicationId">[]> | Array<OakOperation<"create", Omit<SessionMessage.CreateOperationData, "application" | "applicationId">> | OakOperation<SessionMessage.UpdateOperation["action"], Omit<SessionMessage.UpdateOperationData, "application" | "applicationId">, Omit<SessionMessage.Filter, "application" | "applicationId">>>;
@ -329,6 +340,7 @@ export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "systemId" | "do
domainId?: ForeignKey<"domain"> | null;
})) & {
[k: string]: any;
applicationPassport$application?: OakOperation<ApplicationPassport.UpdateOperation["action"], Omit<ApplicationPassport.UpdateOperationData, "application" | "applicationId">, Omit<ApplicationPassport.Filter, "application" | "applicationId">> | OakOperation<ApplicationPassport.RemoveOperation["action"], Omit<ApplicationPassport.RemoveOperationData, "application" | "applicationId">, Omit<ApplicationPassport.Filter, "application" | "applicationId">> | OakOperation<"create", Omit<ApplicationPassport.CreateOperationData, "application" | "applicationId">[]> | Array<OakOperation<"create", Omit<ApplicationPassport.CreateOperationData, "application" | "applicationId">> | OakOperation<ApplicationPassport.UpdateOperation["action"], Omit<ApplicationPassport.UpdateOperationData, "application" | "applicationId">, Omit<ApplicationPassport.Filter, "application" | "applicationId">> | OakOperation<ApplicationPassport.RemoveOperation["action"], Omit<ApplicationPassport.RemoveOperationData, "application" | "applicationId">, Omit<ApplicationPassport.Filter, "application" | "applicationId">>>;
extraFile$application?: OakOperation<ExtraFile.UpdateOperation["action"], Omit<ExtraFile.UpdateOperationData, "application" | "applicationId">, Omit<ExtraFile.Filter, "application" | "applicationId">> | OakOperation<ExtraFile.RemoveOperation["action"], Omit<ExtraFile.RemoveOperationData, "application" | "applicationId">, Omit<ExtraFile.Filter, "application" | "applicationId">> | OakOperation<"create", Omit<ExtraFile.CreateOperationData, "application" | "applicationId">[]> | Array<OakOperation<"create", Omit<ExtraFile.CreateOperationData, "application" | "applicationId">> | OakOperation<ExtraFile.UpdateOperation["action"], Omit<ExtraFile.UpdateOperationData, "application" | "applicationId">, Omit<ExtraFile.Filter, "application" | "applicationId">> | OakOperation<ExtraFile.RemoveOperation["action"], Omit<ExtraFile.RemoveOperationData, "application" | "applicationId">, Omit<ExtraFile.Filter, "application" | "applicationId">>>;
notification$application?: OakOperation<Notification.UpdateOperation["action"], Omit<Notification.UpdateOperationData, "application" | "applicationId">, Omit<Notification.Filter, "application" | "applicationId">> | OakOperation<Notification.RemoveOperation["action"], Omit<Notification.RemoveOperationData, "application" | "applicationId">, Omit<Notification.Filter, "application" | "applicationId">> | OakOperation<"create", Omit<Notification.CreateOperationData, "application" | "applicationId">[]> | Array<OakOperation<"create", Omit<Notification.CreateOperationData, "application" | "applicationId">> | OakOperation<Notification.UpdateOperation["action"], Omit<Notification.UpdateOperationData, "application" | "applicationId">, Omit<Notification.Filter, "application" | "applicationId">> | OakOperation<Notification.RemoveOperation["action"], Omit<Notification.RemoveOperationData, "application" | "applicationId">, Omit<Notification.Filter, "application" | "applicationId">>>;
sessionMessage$application?: OakOperation<SessionMessage.UpdateOperation["action"], Omit<SessionMessage.UpdateOperationData, "application" | "applicationId">, Omit<SessionMessage.Filter, "application" | "applicationId">> | OakOperation<SessionMessage.RemoveOperation["action"], Omit<SessionMessage.RemoveOperationData, "application" | "applicationId">, Omit<SessionMessage.Filter, "application" | "applicationId">> | OakOperation<"create", Omit<SessionMessage.CreateOperationData, "application" | "applicationId">[]> | Array<OakOperation<"create", Omit<SessionMessage.CreateOperationData, "application" | "applicationId">> | OakOperation<SessionMessage.UpdateOperation["action"], Omit<SessionMessage.UpdateOperationData, "application" | "applicationId">, Omit<SessionMessage.Filter, "application" | "applicationId">> | OakOperation<SessionMessage.RemoveOperation["action"], Omit<SessionMessage.RemoveOperationData, "application" | "applicationId">, Omit<SessionMessage.Filter, "application" | "applicationId">>>;

View File

@ -0,0 +1,160 @@
import { ForeignKey } from "oak-domain/lib/types/DataType";
import { Q_DateValue, Q_BooleanValue, Q_NumberValue, Q_StringValue, NodeId, MakeFilter, ExprOp, ExpressionKey } 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, EntityShape } from "oak-domain/lib/types/Entity";
import { GenericAction } from "oak-domain/lib/actions/action";
import { Boolean } from "oak-domain/lib/types/DataType";
import * as Application from "../Application/Schema";
import * as Passport from "../Passport/Schema";
export type OpSchema = EntityShape & {
applicationId: ForeignKey<"application">;
passportId: ForeignKey<"passport">;
isDefault: Boolean;
};
export type OpAttr = keyof OpSchema;
export type Schema = EntityShape & {
applicationId: ForeignKey<"application">;
passportId: ForeignKey<"passport">;
isDefault: Boolean;
application: Application.Schema;
passport: Passport.Schema;
} & {
[A in ExpressionKey]?: any;
};
type AttrFilter = {
id: Q_StringValue;
$$createAt$$: Q_DateValue;
$$seq$$: Q_NumberValue;
$$updateAt$$: Q_DateValue;
applicationId: Q_StringValue;
application: Application.Filter;
passportId: Q_StringValue;
passport: Passport.Filter;
isDefault: Q_BooleanValue;
};
export type Filter = MakeFilter<AttrFilter & ExprOp<OpAttr | string>>;
export type Projection = {
"#id"?: NodeId;
[k: string]: any;
id?: number;
$$createAt$$?: number;
$$updateAt$$?: number;
$$seq$$?: number;
applicationId?: number;
application?: Application.Projection;
passportId?: number;
passport?: Passport.Projection;
isDefault?: number;
} & Partial<ExprOp<OpAttr | string>>;
type ApplicationPassportIdProjection = OneOf<{
id: number;
}>;
type ApplicationIdProjection = OneOf<{
applicationId: number;
}>;
type PassportIdProjection = OneOf<{
passportId: number;
}>;
export type SortAttr = {
id: number;
} | {
$$createAt$$: number;
} | {
$$seq$$: number;
} | {
$$updateAt$$: number;
} | {
applicationId: number;
} | {
application: Application.SortAttr;
} | {
passportId: number;
} | {
passport: Passport.SortAttr;
} | {
isDefault: number;
} | {
[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, "applicationId" | "passportId">> & (({
applicationId?: never;
application: Application.CreateSingleOperation;
} | {
applicationId: ForeignKey<"application">;
application?: Application.UpdateOperation;
} | {
application?: never;
applicationId: ForeignKey<"application">;
}) & ({
passportId?: never;
passport: Passport.CreateSingleOperation;
} | {
passportId: ForeignKey<"passport">;
passport?: Passport.UpdateOperation;
} | {
passport?: never;
passportId: ForeignKey<"passport">;
}));
export type CreateSingleOperation = OakOperation<"create", CreateOperationData>;
export type CreateMultipleOperation = OakOperation<"create", Array<CreateOperationData>>;
export type CreateOperation = CreateSingleOperation | CreateMultipleOperation;
export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "applicationId" | "passportId">> & (({
application?: Application.CreateSingleOperation;
applicationId?: never;
} | {
application?: Application.UpdateOperation;
applicationId?: never;
} | {
application?: Application.RemoveOperation;
applicationId?: never;
} | {
application?: never;
applicationId?: ForeignKey<"application">;
}) & ({
passport?: Passport.CreateSingleOperation;
passportId?: never;
} | {
passport?: Passport.UpdateOperation;
passportId?: never;
} | {
passport?: Passport.RemoveOperation;
passportId?: never;
} | {
passport?: never;
passportId?: ForeignKey<"passport">;
})) & {
[k: string]: any;
};
export type UpdateOperation = OakOperation<"update" | string, UpdateOperationData, Filter, Sorter>;
export type RemoveOperationData = {} & (({
application?: Application.UpdateOperation | Application.RemoveOperation;
}) & ({
passport?: Passport.UpdateOperation | Passport.RemoveOperation;
}));
export type RemoveOperation = OakOperation<"remove", RemoveOperationData, Filter, Sorter>;
export type Operation = CreateOperation | UpdateOperation | RemoveOperation;
export type ApplicationIdSubQuery = Selection<ApplicationIdProjection>;
export type PassportIdSubQuery = Selection<PassportIdProjection>;
export type ApplicationPassportIdSubQuery = Selection<ApplicationPassportIdProjection>;
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 {};

View File

@ -0,0 +1,2 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

View File

@ -0,0 +1,3 @@
import { StorageDesc } from "oak-domain/lib/types/Storage";
import { OpSchema } from "./Schema";
export declare const desc: StorageDesc<OpSchema>;

View File

@ -0,0 +1,24 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.desc = void 0;
const action_1 = require("oak-domain/lib/actions/action");
exports.desc = {
attributes: {
applicationId: {
notNull: true,
type: "ref",
ref: "application"
},
passportId: {
notNull: true,
type: "ref",
ref: "passport"
},
isDefault: {
notNull: true,
type: "boolean"
}
},
actionType: "crud",
actions: action_1.genericActions
};

View File

@ -0,0 +1 @@
{ "name": "应用登录方式", "attr": { "application": "应用", "passport": "登录方式", "isDefault": "是否默认" } }

View File

@ -13,6 +13,7 @@ import { EntityDef as UserEntityGrant } from "./UserEntityGrant/Schema";
import { EntityDef as UserRelation } from "./UserRelation/Schema";
import { EntityDef as Address } from "./Address/Schema";
import { EntityDef as Application } from "./Application/Schema";
import { EntityDef as ApplicationPassport } from "./ApplicationPassport/Schema";
import { EntityDef as Area } from "./Area/Schema";
import { EntityDef as Article } from "./Article/Schema";
import { EntityDef as ArticleMenu } from "./ArticleMenu/Schema";
@ -30,6 +31,7 @@ import { EntityDef as MessageTypeTemplate } from "./MessageTypeTemplate/Schema";
import { EntityDef as Mobile } from "./Mobile/Schema";
import { EntityDef as Notification } from "./Notification/Schema";
import { EntityDef as Parasite } from "./Parasite/Schema";
import { EntityDef as Passport } from "./Passport/Schema";
import { EntityDef as Platform } from "./Platform/Schema";
import { EntityDef as ReadRemark } from "./ReadRemark/Schema";
import { EntityDef as Session } from "./Session/Schema";
@ -68,6 +70,7 @@ export type EntityDict = {
userRelation: UserRelation;
address: Address;
application: Application;
applicationPassport: ApplicationPassport;
area: Area;
article: Article;
articleMenu: ArticleMenu;
@ -85,6 +88,7 @@ export type EntityDict = {
mobile: Mobile;
notification: Notification;
parasite: Parasite;
passport: Passport;
platform: Platform;
readRemark: ReadRemark;
session: Session;

161
lib/oak-app-domain/Passport/Schema.d.ts vendored Normal file
View File

@ -0,0 +1,161 @@
import { ForeignKey, JsonProjection } from "oak-domain/lib/types/DataType";
import { Q_DateValue, Q_BooleanValue, Q_NumberValue, Q_StringValue, Q_EnumValue, NodeId, MakeFilter, ExprOp, ExpressionKey, JsonFilter, 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 { Boolean } from "oak-domain/lib/types/DataType";
import * as System from "../System/Schema";
import * as ApplicationPassport from "../ApplicationPassport/Schema";
type Type = "password" | "sms" | "email" | "wechatWeb" | "wechatMp" | "wechatPublic" | "wechatPublicForWeb" | "wechatMpForWeb";
type SmsConfig = {
mockSend?: boolean;
templateName?: string;
codeDuration?: number;
};
type EmailConifg = {
smtpUrl: string;
smtpAccount: string;
smtpPassword: string;
};
type PfwConfig = {
appId: string;
};
type MfwConfig = {
appId: string;
};
export type OpSchema = EntityShape & {
systemId: ForeignKey<"system">;
type: Type;
config?: (SmsConfig | EmailConifg | PfwConfig | MfwConfig) | null;
enabled: Boolean;
};
export type OpAttr = keyof OpSchema;
export type Schema = EntityShape & {
systemId: ForeignKey<"system">;
type: Type;
config?: (SmsConfig | EmailConifg | PfwConfig | MfwConfig) | null;
enabled: Boolean;
system: System.Schema;
applicationPassport$passport?: Array<ApplicationPassport.Schema>;
applicationPassport$passport$$aggr?: AggregationResult<ApplicationPassport.Schema>;
} & {
[A in ExpressionKey]?: any;
};
type AttrFilter = {
id: Q_StringValue;
$$createAt$$: Q_DateValue;
$$seq$$: Q_NumberValue;
$$updateAt$$: Q_DateValue;
systemId: Q_StringValue;
system: System.Filter;
type: Q_EnumValue<Type>;
config: JsonFilter<SmsConfig | EmailConifg | PfwConfig | MfwConfig>;
enabled: Q_BooleanValue;
applicationPassport$passport: ApplicationPassport.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;
systemId?: number;
system?: System.Projection;
type?: number;
config?: number | JsonProjection<SmsConfig | EmailConifg | PfwConfig | MfwConfig>;
enabled?: number;
applicationPassport$passport?: ApplicationPassport.Selection & {
$entity: "applicationPassport";
};
applicationPassport$passport$$aggr?: ApplicationPassport.Aggregation & {
$entity: "applicationPassport";
};
} & Partial<ExprOp<OpAttr | string>>;
type PassportIdProjection = OneOf<{
id: number;
}>;
type SystemIdProjection = OneOf<{
systemId: number;
}>;
export type SortAttr = {
id: number;
} | {
$$createAt$$: number;
} | {
$$seq$$: number;
} | {
$$updateAt$$: number;
} | {
systemId: number;
} | {
system: System.SortAttr;
} | {
type: number;
} | {
enabled: number;
} | {
[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, "systemId">> & (({
systemId?: never;
system: System.CreateSingleOperation;
} | {
systemId: ForeignKey<"system">;
system?: System.UpdateOperation;
} | {
system?: never;
systemId: ForeignKey<"system">;
})) & {
applicationPassport$passport?: OakOperation<ApplicationPassport.UpdateOperation["action"], Omit<ApplicationPassport.UpdateOperationData, "passport" | "passportId">, Omit<ApplicationPassport.Filter, "passport" | "passportId">> | OakOperation<"create", Omit<ApplicationPassport.CreateOperationData, "passport" | "passportId">[]> | Array<OakOperation<"create", Omit<ApplicationPassport.CreateOperationData, "passport" | "passportId">> | OakOperation<ApplicationPassport.UpdateOperation["action"], Omit<ApplicationPassport.UpdateOperationData, "passport" | "passportId">, Omit<ApplicationPassport.Filter, "passport" | "passportId">>>;
};
export type CreateSingleOperation = OakOperation<"create", CreateOperationData>;
export type CreateMultipleOperation = OakOperation<"create", Array<CreateOperationData>>;
export type CreateOperation = CreateSingleOperation | CreateMultipleOperation;
export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "systemId">> & (({
system?: System.CreateSingleOperation;
systemId?: never;
} | {
system?: System.UpdateOperation;
systemId?: never;
} | {
system?: System.RemoveOperation;
systemId?: never;
} | {
system?: never;
systemId?: ForeignKey<"system">;
})) & {
[k: string]: any;
applicationPassport$passport?: OakOperation<ApplicationPassport.UpdateOperation["action"], Omit<ApplicationPassport.UpdateOperationData, "passport" | "passportId">, Omit<ApplicationPassport.Filter, "passport" | "passportId">> | OakOperation<ApplicationPassport.RemoveOperation["action"], Omit<ApplicationPassport.RemoveOperationData, "passport" | "passportId">, Omit<ApplicationPassport.Filter, "passport" | "passportId">> | OakOperation<"create", Omit<ApplicationPassport.CreateOperationData, "passport" | "passportId">[]> | Array<OakOperation<"create", Omit<ApplicationPassport.CreateOperationData, "passport" | "passportId">> | OakOperation<ApplicationPassport.UpdateOperation["action"], Omit<ApplicationPassport.UpdateOperationData, "passport" | "passportId">, Omit<ApplicationPassport.Filter, "passport" | "passportId">> | OakOperation<ApplicationPassport.RemoveOperation["action"], Omit<ApplicationPassport.RemoveOperationData, "passport" | "passportId">, Omit<ApplicationPassport.Filter, "passport" | "passportId">>>;
};
export type UpdateOperation = OakOperation<"update" | string, UpdateOperationData, Filter, Sorter>;
export type RemoveOperationData = {} & (({
system?: System.UpdateOperation | System.RemoveOperation;
}));
export type RemoveOperation = OakOperation<"remove", RemoveOperationData, Filter, Sorter>;
export type Operation = CreateOperation | UpdateOperation | RemoveOperation;
export type SystemIdSubQuery = Selection<SystemIdProjection>;
export type PassportIdSubQuery = Selection<PassportIdProjection>;
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 {};

View File

@ -0,0 +1,2 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

View File

@ -0,0 +1,3 @@
import { StorageDesc } from "oak-domain/lib/types/Storage";
import { OpSchema } from "./Schema";
export declare const desc: StorageDesc<OpSchema>;

View File

@ -0,0 +1,27 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.desc = void 0;
const action_1 = require("oak-domain/lib/actions/action");
exports.desc = {
attributes: {
systemId: {
notNull: true,
type: "ref",
ref: "system"
},
type: {
notNull: true,
type: "enum",
enumeration: ["password", "sms", "email", "wechatWeb", "wechatMp", "wechatPublic", "wechatPublicForWeb", "wechatMpForWeb"]
},
config: {
type: "object"
},
enabled: {
notNull: true,
type: "boolean"
}
},
actionType: "crud",
actions: action_1.genericActions
};

View File

@ -0,0 +1,3 @@
import { EntityDef } from "./Schema";
import { StyleDef } from "oak-domain/lib/types/Style";
export declare const style: StyleDef<EntityDef["OpSchema"], EntityDef["Action"]>;

View File

@ -0,0 +1,17 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.style = void 0;
exports.style = {
color: {
type: {
password: '#00BFFF',
sms: '#F0F8FF',
email: '#FFA07A',
wechatWeb: '#90EE90',
wechatPublic: '#32CD32',
wechatMp: '#3CB371',
wechatMpForWeb: '#006400',
wechatPublicForWeb: '#008000',
}
}
};

View File

@ -0,0 +1 @@
{ "name": "登录方式", "attr": { "system": "系统", "type": "登录方式", "config": "登录方式配置", "enabled": "是否启用" }, "v": { "type": { "email": "邮箱", "sms": "短信", "password": "密码", "wechatMp": "小程序", "wechatPublic": "公众号", "wechatWeb": "微信网站", "wechatMpForWeb": "小程序授权", "wechatPublicForWeb": "公众号授权" } } }

View File

@ -16,45 +16,47 @@ const Storage_12 = require("./UserEntityGrant/Storage");
const Storage_13 = require("./UserRelation/Storage");
const Storage_14 = require("./Address/Storage");
const Storage_15 = require("./Application/Storage");
const Storage_16 = require("./Area/Storage");
const Storage_17 = require("./Article/Storage");
const Storage_18 = require("./ArticleMenu/Storage");
const Storage_19 = require("./Captcha/Storage");
const Storage_20 = require("./ChangePasswordTemp/Storage");
const Storage_21 = require("./Domain/Storage");
const Storage_22 = require("./Email/Storage");
const Storage_23 = require("./ExtraFile/Storage");
const Storage_24 = require("./Livestream/Storage");
const Storage_25 = require("./Message/Storage");
const Storage_26 = require("./MessageSystem/Storage");
const Storage_27 = require("./MessageType/Storage");
const Storage_28 = require("./MessageTypeSmsTemplate/Storage");
const Storage_29 = require("./MessageTypeTemplate/Storage");
const Storage_30 = require("./Mobile/Storage");
const Storage_31 = require("./Notification/Storage");
const Storage_32 = require("./Parasite/Storage");
const Storage_33 = require("./Platform/Storage");
const Storage_34 = require("./ReadRemark/Storage");
const Storage_35 = require("./Session/Storage");
const Storage_36 = require("./SessionMessage/Storage");
const Storage_37 = require("./SmsTemplate/Storage");
const Storage_38 = require("./Station/Storage");
const Storage_39 = require("./Subscription/Storage");
const Storage_40 = require("./Subway/Storage");
const Storage_41 = require("./SubwayStation/Storage");
const Storage_42 = require("./System/Storage");
const Storage_43 = require("./ToDo/Storage");
const Storage_44 = require("./Token/Storage");
const Storage_45 = require("./UserSystem/Storage");
const Storage_46 = require("./UserWechatPublicTag/Storage");
const Storage_47 = require("./WechatLogin/Storage");
const Storage_48 = require("./WechatMenu/Storage");
const Storage_49 = require("./WechatMpJump/Storage");
const Storage_50 = require("./WechatPublicAutoReply/Storage");
const Storage_51 = require("./WechatPublicTag/Storage");
const Storage_52 = require("./WechatQrCode/Storage");
const Storage_53 = require("./WechatTemplate/Storage");
const Storage_54 = require("./WechatUser/Storage");
const Storage_16 = require("./ApplicationPassport/Storage");
const Storage_17 = require("./Area/Storage");
const Storage_18 = require("./Article/Storage");
const Storage_19 = require("./ArticleMenu/Storage");
const Storage_20 = require("./Captcha/Storage");
const Storage_21 = require("./ChangePasswordTemp/Storage");
const Storage_22 = require("./Domain/Storage");
const Storage_23 = require("./Email/Storage");
const Storage_24 = require("./ExtraFile/Storage");
const Storage_25 = require("./Livestream/Storage");
const Storage_26 = require("./Message/Storage");
const Storage_27 = require("./MessageSystem/Storage");
const Storage_28 = require("./MessageType/Storage");
const Storage_29 = require("./MessageTypeSmsTemplate/Storage");
const Storage_30 = require("./MessageTypeTemplate/Storage");
const Storage_31 = require("./Mobile/Storage");
const Storage_32 = require("./Notification/Storage");
const Storage_33 = require("./Parasite/Storage");
const Storage_34 = require("./Passport/Storage");
const Storage_35 = require("./Platform/Storage");
const Storage_36 = require("./ReadRemark/Storage");
const Storage_37 = require("./Session/Storage");
const Storage_38 = require("./SessionMessage/Storage");
const Storage_39 = require("./SmsTemplate/Storage");
const Storage_40 = require("./Station/Storage");
const Storage_41 = require("./Subscription/Storage");
const Storage_42 = require("./Subway/Storage");
const Storage_43 = require("./SubwayStation/Storage");
const Storage_44 = require("./System/Storage");
const Storage_45 = require("./ToDo/Storage");
const Storage_46 = require("./Token/Storage");
const Storage_47 = require("./UserSystem/Storage");
const Storage_48 = require("./UserWechatPublicTag/Storage");
const Storage_49 = require("./WechatLogin/Storage");
const Storage_50 = require("./WechatMenu/Storage");
const Storage_51 = require("./WechatMpJump/Storage");
const Storage_52 = require("./WechatPublicAutoReply/Storage");
const Storage_53 = require("./WechatPublicTag/Storage");
const Storage_54 = require("./WechatQrCode/Storage");
const Storage_55 = require("./WechatTemplate/Storage");
const Storage_56 = require("./WechatUser/Storage");
exports.storageSchema = {
actionAuth: Storage_1.desc,
i18n: Storage_2.desc,
@ -71,43 +73,45 @@ exports.storageSchema = {
userRelation: Storage_13.desc,
address: Storage_14.desc,
application: Storage_15.desc,
area: Storage_16.desc,
article: Storage_17.desc,
articleMenu: Storage_18.desc,
captcha: Storage_19.desc,
changePasswordTemp: Storage_20.desc,
domain: Storage_21.desc,
email: Storage_22.desc,
extraFile: Storage_23.desc,
livestream: Storage_24.desc,
message: Storage_25.desc,
messageSystem: Storage_26.desc,
messageType: Storage_27.desc,
messageTypeSmsTemplate: Storage_28.desc,
messageTypeTemplate: Storage_29.desc,
mobile: Storage_30.desc,
notification: Storage_31.desc,
parasite: Storage_32.desc,
platform: Storage_33.desc,
readRemark: Storage_34.desc,
session: Storage_35.desc,
sessionMessage: Storage_36.desc,
smsTemplate: Storage_37.desc,
station: Storage_38.desc,
subscription: Storage_39.desc,
subway: Storage_40.desc,
subwayStation: Storage_41.desc,
system: Storage_42.desc,
toDo: Storage_43.desc,
token: Storage_44.desc,
userSystem: Storage_45.desc,
userWechatPublicTag: Storage_46.desc,
wechatLogin: Storage_47.desc,
wechatMenu: Storage_48.desc,
wechatMpJump: Storage_49.desc,
wechatPublicAutoReply: Storage_50.desc,
wechatPublicTag: Storage_51.desc,
wechatQrCode: Storage_52.desc,
wechatTemplate: Storage_53.desc,
wechatUser: Storage_54.desc
applicationPassport: Storage_16.desc,
area: Storage_17.desc,
article: Storage_18.desc,
articleMenu: Storage_19.desc,
captcha: Storage_20.desc,
changePasswordTemp: Storage_21.desc,
domain: Storage_22.desc,
email: Storage_23.desc,
extraFile: Storage_24.desc,
livestream: Storage_25.desc,
message: Storage_26.desc,
messageSystem: Storage_27.desc,
messageType: Storage_28.desc,
messageTypeSmsTemplate: Storage_29.desc,
messageTypeTemplate: Storage_30.desc,
mobile: Storage_31.desc,
notification: Storage_32.desc,
parasite: Storage_33.desc,
passport: Storage_34.desc,
platform: Storage_35.desc,
readRemark: Storage_36.desc,
session: Storage_37.desc,
sessionMessage: Storage_38.desc,
smsTemplate: Storage_39.desc,
station: Storage_40.desc,
subscription: Storage_41.desc,
subway: Storage_42.desc,
subwayStation: Storage_43.desc,
system: Storage_44.desc,
toDo: Storage_45.desc,
token: Storage_46.desc,
userSystem: Storage_47.desc,
userWechatPublicTag: Storage_48.desc,
wechatLogin: Storage_49.desc,
wechatMenu: Storage_50.desc,
wechatMpJump: Storage_51.desc,
wechatPublicAutoReply: Storage_52.desc,
wechatPublicTag: Storage_53.desc,
wechatQrCode: Storage_54.desc,
wechatTemplate: Storage_55.desc,
wechatUser: Storage_56.desc
};

View File

@ -14,17 +14,18 @@ const Style_10 = require("./Message/Style");
const Style_11 = require("./Mobile/Style");
const Style_12 = require("./Notification/Style");
const Style_13 = require("./Parasite/Style");
const Style_14 = require("./SmsTemplate/Style");
const Style_15 = require("./ToDo/Style");
const Style_16 = require("./Token/Style");
const Style_17 = require("./User/Style");
const Style_18 = require("./UserEntityGrant/Style");
const Style_19 = require("./UserWechatPublicTag/Style");
const Style_20 = require("./WechatLogin/Style");
const Style_21 = require("./WechatMenu/Style");
const Style_22 = require("./WechatPublicTag/Style");
const Style_23 = require("./WechatQrCode/Style");
const Style_24 = require("./WechatUser/Style");
const Style_14 = require("./Passport/Style");
const Style_15 = require("./SmsTemplate/Style");
const Style_16 = require("./ToDo/Style");
const Style_17 = require("./Token/Style");
const Style_18 = require("./User/Style");
const Style_19 = require("./UserEntityGrant/Style");
const Style_20 = require("./UserWechatPublicTag/Style");
const Style_21 = require("./WechatLogin/Style");
const Style_22 = require("./WechatMenu/Style");
const Style_23 = require("./WechatPublicTag/Style");
const Style_24 = require("./WechatQrCode/Style");
const Style_25 = require("./WechatUser/Style");
exports.styleDict = {
modi: Style_1.style,
application: Style_2.style,
@ -39,15 +40,16 @@ exports.styleDict = {
mobile: Style_11.style,
notification: Style_12.style,
parasite: Style_13.style,
smsTemplate: Style_14.style,
toDo: Style_15.style,
token: Style_16.style,
user: Style_17.style,
userEntityGrant: Style_18.style,
userWechatPublicTag: Style_19.style,
wechatLogin: Style_20.style,
wechatMenu: Style_21.style,
wechatPublicTag: Style_22.style,
wechatQrCode: Style_23.style,
wechatUser: Style_24.style
passport: Style_14.style,
smsTemplate: Style_15.style,
toDo: Style_16.style,
token: Style_17.style,
user: Style_18.style,
userEntityGrant: Style_19.style,
userWechatPublicTag: Style_20.style,
wechatLogin: Style_21.style,
wechatMenu: Style_22.style,
wechatPublicTag: Style_23.style,
wechatQrCode: Style_24.style,
wechatUser: Style_25.style
};

View File

@ -10,6 +10,7 @@ import * as Platform from "../Platform/Schema";
import * as Application from "../Application/Schema";
import * as Domain from "../Domain/Schema";
import * as MessageSystem from "../MessageSystem/Schema";
import * as Passport from "../Passport/Schema";
import * as SmsTemplate from "../SmsTemplate/Schema";
import * as UserSystem from "../UserSystem/Schema";
export type OpSchema = EntityShape & {
@ -41,6 +42,8 @@ export type Schema = EntityShape & {
domain$system$$aggr?: AggregationResult<Domain.Schema>;
messageSystem$system?: Array<MessageSystem.Schema>;
messageSystem$system$$aggr?: AggregationResult<MessageSystem.Schema>;
passport$system?: Array<Passport.Schema>;
passport$system$$aggr?: AggregationResult<Passport.Schema>;
smsTemplate$system?: Array<SmsTemplate.Schema>;
smsTemplate$system$$aggr?: AggregationResult<SmsTemplate.Schema>;
userSystem$system?: Array<UserSystem.Schema>;
@ -66,6 +69,7 @@ type AttrFilter = {
application$system: Application.Filter & SubQueryPredicateMetadata;
domain$system: Domain.Filter & SubQueryPredicateMetadata;
messageSystem$system: MessageSystem.Filter & SubQueryPredicateMetadata;
passport$system: Passport.Filter & SubQueryPredicateMetadata;
smsTemplate$system: SmsTemplate.Filter & SubQueryPredicateMetadata;
userSystem$system: UserSystem.Filter & SubQueryPredicateMetadata;
};
@ -105,6 +109,12 @@ export type Projection = {
messageSystem$system$$aggr?: MessageSystem.Aggregation & {
$entity: "messageSystem";
};
passport$system?: Passport.Selection & {
$entity: "passport";
};
passport$system$$aggr?: Passport.Aggregation & {
$entity: "passport";
};
smsTemplate$system?: SmsTemplate.Selection & {
$entity: "smsTemplate";
};
@ -180,6 +190,7 @@ export type CreateOperationData = FormCreateData<Omit<OpSchema, "entity" | "enti
application$system?: OakOperation<Application.UpdateOperation["action"], Omit<Application.UpdateOperationData, "system" | "systemId">, Omit<Application.Filter, "system" | "systemId">> | OakOperation<"create", Omit<Application.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<Application.CreateOperationData, "system" | "systemId">> | OakOperation<Application.UpdateOperation["action"], Omit<Application.UpdateOperationData, "system" | "systemId">, Omit<Application.Filter, "system" | "systemId">>>;
domain$system?: OakOperation<Domain.UpdateOperation["action"], Omit<Domain.UpdateOperationData, "system" | "systemId">, Omit<Domain.Filter, "system" | "systemId">> | OakOperation<"create", Omit<Domain.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<Domain.CreateOperationData, "system" | "systemId">> | OakOperation<Domain.UpdateOperation["action"], Omit<Domain.UpdateOperationData, "system" | "systemId">, Omit<Domain.Filter, "system" | "systemId">>>;
messageSystem$system?: OakOperation<MessageSystem.UpdateOperation["action"], Omit<MessageSystem.UpdateOperationData, "system" | "systemId">, Omit<MessageSystem.Filter, "system" | "systemId">> | OakOperation<"create", Omit<MessageSystem.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<MessageSystem.CreateOperationData, "system" | "systemId">> | OakOperation<MessageSystem.UpdateOperation["action"], Omit<MessageSystem.UpdateOperationData, "system" | "systemId">, Omit<MessageSystem.Filter, "system" | "systemId">>>;
passport$system?: OakOperation<Passport.UpdateOperation["action"], Omit<Passport.UpdateOperationData, "system" | "systemId">, Omit<Passport.Filter, "system" | "systemId">> | OakOperation<"create", Omit<Passport.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<Passport.CreateOperationData, "system" | "systemId">> | OakOperation<Passport.UpdateOperation["action"], Omit<Passport.UpdateOperationData, "system" | "systemId">, Omit<Passport.Filter, "system" | "systemId">>>;
smsTemplate$system?: OakOperation<SmsTemplate.UpdateOperation["action"], Omit<SmsTemplate.UpdateOperationData, "system" | "systemId">, Omit<SmsTemplate.Filter, "system" | "systemId">> | OakOperation<"create", Omit<SmsTemplate.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<SmsTemplate.CreateOperationData, "system" | "systemId">> | OakOperation<SmsTemplate.UpdateOperation["action"], Omit<SmsTemplate.UpdateOperationData, "system" | "systemId">, Omit<SmsTemplate.Filter, "system" | "systemId">>>;
userSystem$system?: OakOperation<UserSystem.UpdateOperation["action"], Omit<UserSystem.UpdateOperationData, "system" | "systemId">, Omit<UserSystem.Filter, "system" | "systemId">> | OakOperation<"create", Omit<UserSystem.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<UserSystem.CreateOperationData, "system" | "systemId">> | OakOperation<UserSystem.UpdateOperation["action"], Omit<UserSystem.UpdateOperationData, "system" | "systemId">, Omit<UserSystem.Filter, "system" | "systemId">>>;
};
@ -203,6 +214,7 @@ export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "platformId">> &
application$system?: OakOperation<Application.UpdateOperation["action"], Omit<Application.UpdateOperationData, "system" | "systemId">, Omit<Application.Filter, "system" | "systemId">> | OakOperation<Application.RemoveOperation["action"], Omit<Application.RemoveOperationData, "system" | "systemId">, Omit<Application.Filter, "system" | "systemId">> | OakOperation<"create", Omit<Application.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<Application.CreateOperationData, "system" | "systemId">> | OakOperation<Application.UpdateOperation["action"], Omit<Application.UpdateOperationData, "system" | "systemId">, Omit<Application.Filter, "system" | "systemId">> | OakOperation<Application.RemoveOperation["action"], Omit<Application.RemoveOperationData, "system" | "systemId">, Omit<Application.Filter, "system" | "systemId">>>;
domain$system?: OakOperation<Domain.UpdateOperation["action"], Omit<Domain.UpdateOperationData, "system" | "systemId">, Omit<Domain.Filter, "system" | "systemId">> | OakOperation<Domain.RemoveOperation["action"], Omit<Domain.RemoveOperationData, "system" | "systemId">, Omit<Domain.Filter, "system" | "systemId">> | OakOperation<"create", Omit<Domain.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<Domain.CreateOperationData, "system" | "systemId">> | OakOperation<Domain.UpdateOperation["action"], Omit<Domain.UpdateOperationData, "system" | "systemId">, Omit<Domain.Filter, "system" | "systemId">> | OakOperation<Domain.RemoveOperation["action"], Omit<Domain.RemoveOperationData, "system" | "systemId">, Omit<Domain.Filter, "system" | "systemId">>>;
messageSystem$system?: OakOperation<MessageSystem.UpdateOperation["action"], Omit<MessageSystem.UpdateOperationData, "system" | "systemId">, Omit<MessageSystem.Filter, "system" | "systemId">> | OakOperation<MessageSystem.RemoveOperation["action"], Omit<MessageSystem.RemoveOperationData, "system" | "systemId">, Omit<MessageSystem.Filter, "system" | "systemId">> | OakOperation<"create", Omit<MessageSystem.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<MessageSystem.CreateOperationData, "system" | "systemId">> | OakOperation<MessageSystem.UpdateOperation["action"], Omit<MessageSystem.UpdateOperationData, "system" | "systemId">, Omit<MessageSystem.Filter, "system" | "systemId">> | OakOperation<MessageSystem.RemoveOperation["action"], Omit<MessageSystem.RemoveOperationData, "system" | "systemId">, Omit<MessageSystem.Filter, "system" | "systemId">>>;
passport$system?: OakOperation<Passport.UpdateOperation["action"], Omit<Passport.UpdateOperationData, "system" | "systemId">, Omit<Passport.Filter, "system" | "systemId">> | OakOperation<Passport.RemoveOperation["action"], Omit<Passport.RemoveOperationData, "system" | "systemId">, Omit<Passport.Filter, "system" | "systemId">> | OakOperation<"create", Omit<Passport.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<Passport.CreateOperationData, "system" | "systemId">> | OakOperation<Passport.UpdateOperation["action"], Omit<Passport.UpdateOperationData, "system" | "systemId">, Omit<Passport.Filter, "system" | "systemId">> | OakOperation<Passport.RemoveOperation["action"], Omit<Passport.RemoveOperationData, "system" | "systemId">, Omit<Passport.Filter, "system" | "systemId">>>;
smsTemplate$system?: OakOperation<SmsTemplate.UpdateOperation["action"], Omit<SmsTemplate.UpdateOperationData, "system" | "systemId">, Omit<SmsTemplate.Filter, "system" | "systemId">> | OakOperation<SmsTemplate.RemoveOperation["action"], Omit<SmsTemplate.RemoveOperationData, "system" | "systemId">, Omit<SmsTemplate.Filter, "system" | "systemId">> | OakOperation<"create", Omit<SmsTemplate.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<SmsTemplate.CreateOperationData, "system" | "systemId">> | OakOperation<SmsTemplate.UpdateOperation["action"], Omit<SmsTemplate.UpdateOperationData, "system" | "systemId">, Omit<SmsTemplate.Filter, "system" | "systemId">> | OakOperation<SmsTemplate.RemoveOperation["action"], Omit<SmsTemplate.RemoveOperationData, "system" | "systemId">, Omit<SmsTemplate.Filter, "system" | "systemId">>>;
userSystem$system?: OakOperation<UserSystem.UpdateOperation["action"], Omit<UserSystem.UpdateOperationData, "system" | "systemId">, Omit<UserSystem.Filter, "system" | "systemId">> | OakOperation<UserSystem.RemoveOperation["action"], Omit<UserSystem.RemoveOperationData, "system" | "systemId">, Omit<UserSystem.Filter, "system" | "systemId">> | OakOperation<"create", Omit<UserSystem.CreateOperationData, "system" | "systemId">[]> | Array<OakOperation<"create", Omit<UserSystem.CreateOperationData, "system" | "systemId">> | OakOperation<UserSystem.UpdateOperation["action"], Omit<UserSystem.UpdateOperationData, "system" | "systemId">, Omit<UserSystem.Filter, "system" | "systemId">> | OakOperation<UserSystem.RemoveOperation["action"], Omit<UserSystem.RemoveOperationData, "system" | "systemId">, Omit<UserSystem.Filter, "system" | "systemId">>>;
};

View File

@ -13,6 +13,7 @@ import * as UserEntityGrant from "./UserEntityGrant/Schema";
import * as UserRelation from "./UserRelation/Schema";
import * as Address from "./Address/Schema";
import * as Application from "./Application/Schema";
import * as ApplicationPassport from "./ApplicationPassport/Schema";
import * as Area from "./Area/Schema";
import * as Article from "./Article/Schema";
import * as ArticleMenu from "./ArticleMenu/Schema";
@ -30,6 +31,7 @@ import * as MessageTypeTemplate from "./MessageTypeTemplate/Schema";
import * as Mobile from "./Mobile/Schema";
import * as Notification from "./Notification/Schema";
import * as Parasite from "./Parasite/Schema";
import * as Passport from "./Passport/Schema";
import * as Platform from "./Platform/Schema";
import * as ReadRemark from "./ReadRemark/Schema";
import * as Session from "./Session/Schema";
@ -193,7 +195,9 @@ export type AddressIdSubQuery = {
}) | any;
};
export type ApplicationIdSubQuery = {
[K in "$in" | "$nin"]?: (ExtraFile.ApplicationIdSubQuery & {
[K in "$in" | "$nin"]?: (ApplicationPassport.ApplicationIdSubQuery & {
entity: "applicationPassport";
}) | (ExtraFile.ApplicationIdSubQuery & {
entity: "extraFile";
}) | (Notification.ApplicationIdSubQuery & {
entity: "notification";
@ -219,6 +223,11 @@ export type ApplicationIdSubQuery = {
entity: "application";
}) | any;
};
export type ApplicationPassportIdSubQuery = {
[K in "$in" | "$nin"]?: (ApplicationPassport.ApplicationPassportIdSubQuery & {
entity: "applicationPassport";
}) | any;
};
export type AreaIdSubQuery = {
[K in "$in" | "$nin"]?: (Address.AreaIdSubQuery & {
entity: "address";
@ -334,6 +343,13 @@ export type ParasiteIdSubQuery = {
entity: "parasite";
}) | any;
};
export type PassportIdSubQuery = {
[K in "$in" | "$nin"]?: (ApplicationPassport.PassportIdSubQuery & {
entity: "applicationPassport";
}) | (Passport.PassportIdSubQuery & {
entity: "passport";
}) | any;
};
export type PlatformIdSubQuery = {
[K in "$in" | "$nin"]?: (Message.PlatformIdSubQuery & {
entity: "message";
@ -406,6 +422,8 @@ export type SystemIdSubQuery = {
entity: "domain";
}) | (MessageSystem.SystemIdSubQuery & {
entity: "messageSystem";
}) | (Passport.SystemIdSubQuery & {
entity: "passport";
}) | (SmsTemplate.SystemIdSubQuery & {
entity: "smsTemplate";
}) | (UserSystem.SystemIdSubQuery & {

View File

@ -68,5 +68,23 @@ const triggers = [
return 1;
}
},
{
name: '删除application前将关联的passport删除',
entity: 'application',
action: 'remove',
when: 'before',
fn: async ({ operation }, context, option) => {
const { filter } = operation;
await context.operate('applicationPassport', {
id: await (0, uuid_1.generateNewIdAsync)(),
action: 'remove',
data: {},
filter: {
application: filter,
},
}, option);
return 1;
}
},
];
exports.default = triggers;

View File

@ -1,2 +1,2 @@
declare const _default: (import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BRC<import("../oak-app-domain").EntityDict>>)[];
declare const _default: (import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "system", import("..").BRC<import("../oak-app-domain").EntityDict>>)[];
export default _default;

View File

@ -17,6 +17,7 @@ const sessionMessage_1 = tslib_1.__importDefault(require("./sessionMessage"));
const wechatMenu_1 = tslib_1.__importDefault(require("./wechatMenu"));
const wechatPublicTag_1 = tslib_1.__importDefault(require("./wechatPublicTag"));
const wechatMpJump_1 = tslib_1.__importDefault(require("./wechatMpJump"));
const system_1 = tslib_1.__importDefault(require("./system"));
// import accountTriggers from './account';
exports.default = [
// ...accountTriggers,
@ -36,4 +37,5 @@ exports.default = [
...wechatMenu_1.default,
...wechatPublicTag_1.default,
...wechatMpJump_1.default,
...system_1.default,
];

5
lib/triggers/system.d.ts vendored Normal file
View File

@ -0,0 +1,5 @@
import { Trigger } from 'oak-domain/lib/types/Trigger';
import { EntityDict } from '../oak-app-domain/EntityDict';
import { BRC } from '../types/RuntimeCxt';
declare const triggers: Trigger<EntityDict, 'system', BRC<EntityDict>>[];
export default triggers;

47
lib/triggers/system.js Normal file
View File

@ -0,0 +1,47 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const uuid_1 = require("oak-domain/lib/utils/uuid");
const Storage_1 = require("../oak-app-domain/Passport/Storage");
const assert_1 = require("oak-domain/lib/utils/assert");
const { attributes: { type: passportType } } = Storage_1.desc;
const triggers = [
{
name: '添加system时添加相应的passport',
entity: 'system',
action: 'create',
when: 'before',
fn: async ({ operation }) => {
const { data } = operation;
(0, assert_1.assert)(!(data instanceof Array));
data.passport$system = await Promise.all(passportType.enumeration.map(async (type) => ({
id: await (0, uuid_1.generateNewIdAsync)(),
action: 'create',
data: {
id: await (0, uuid_1.generateNewIdAsync)(),
type,
enabled: false,
}
})));
return 1;
}
},
{
name: '当system删除前删除相关的passports',
entity: 'system',
action: 'remove',
when: 'before',
fn: async ({ operation }, context, option) => {
const { filter } = operation;
await context.operate('passport', {
id: await (0, uuid_1.generateNewIdAsync)(),
action: 'remove',
data: {},
filter: {
system: filter,
},
}, option);
return 1;
},
},
];
exports.default = triggers;

View File

@ -14,7 +14,7 @@ export declare function createToDo<ED extends EntityDict & BaseEntityDict, T ext
redirectTo: EntityDict['toDo']['OpSchema']['redirectTo'];
entity: any;
entityId: string;
}, userIds?: string[]): Promise<0 | 1>;
}, userIds?: string[]): Promise<1 | 0>;
/**
* todo例程entity对象上进行action操作时filtertodo完成
* entity的action的后trigger中调用

View File

@ -0,0 +1,25 @@
import { String, Int, Datetime, Image, Boolean, Text } from 'oak-domain/lib/types/DataType';
import { EntityShape } from 'oak-domain/lib/types/Entity';
import { EntityDesc } from 'oak-domain/lib/types/EntityDesc';
import { Schema as Application } from './Application';
import { Schema as Passport } from './Passport';
export interface Schema extends EntityShape {
application: Application;
passport: Passport;
isDefault: Boolean;
};
export const entityDesc: EntityDesc<Schema> = {
locales: {
zh_CN: {
name: '应用登录方式',
attr: {
application: '应用',
passport: '登录方式',
isDefault: '是否默认',
},
},
},
};

88
src/entities/Passport.ts Normal file
View File

@ -0,0 +1,88 @@
import {
String,
Int,
Datetime,
Image,
Boolean,
Text,
} from 'oak-domain/lib/types/DataType';
import { EntityShape } from 'oak-domain/lib/types/Entity';
import { Schema as System } from './System';
import { EntityDesc } from 'oak-domain/lib/types/EntityDesc';
type Type = 'password' | 'sms' | 'email' | 'wechatWeb' | 'wechatMp' | 'wechatPublic' | 'wechatPublicForWeb' | 'wechatMpForWeb';
type SmsConfig = {
mockSend?: boolean;
templateName?: string; //验证码模版名
codeDuration?: number; //验证码有效时间 单位分钟, 不填1分钟
};
type EmailConifg = {
smtpUrl: string;
smtpAccount: string;
smtpPassword: string;
};
type PfwConfig = {
appId: string;
};
type MfwConfig = {
appId: string;
};
export interface Schema extends EntityShape {
system: System;
type: Type;
config?: SmsConfig | EmailConifg | PfwConfig | MfwConfig;
enabled: Boolean;
};
export const entityDesc: EntityDesc<
Schema,
'',
'',
{
type: Schema['type'];
}
> = {
locales: {
zh_CN: {
name: '登录方式',
attr: {
system: '系统',
type: '登录方式',
config: '登录方式配置',
enabled: '是否启用',
},
v: {
type: {
email: '邮箱',
sms: '短信',
password: '密码',
wechatMp: '小程序',
wechatPublic: '公众号',
wechatWeb: '微信网站',
wechatMpForWeb: '小程序授权',
wechatPublicForWeb: '公众号授权'
},
},
},
},
style: {
color: {
type: {
password: '#00BFFF',
sms: '#F0F8FF',
email: '#FFA07A',
wechatWeb: '#90EE90',
wechatPublic: '#32CD32',
wechatMp: '#3CB371',
wechatMpForWeb: '#006400',
wechatPublicForWeb: '#008000',
}
}
}
};

View File

@ -1,5 +1,5 @@
import { generateNewIdAsync } from 'oak-domain/lib/utils/uuid';
import { Trigger } from 'oak-domain/lib/types/Trigger';
import { Trigger, RemoveTrigger } from 'oak-domain/lib/types/Trigger';
import { EntityDict } from '../oak-app-domain/EntityDict';
import { BRC } from '../types/RuntimeCxt';
import {
@ -73,6 +73,24 @@ const triggers: Trigger<EntityDict, 'application', BRC<EntityDict>>[] = [
return 1;
}
},
{
name: '删除application前将关联的passport删除',
entity: 'application',
action: 'remove',
when: 'before',
fn: async ({ operation }, context, option) => {
const { filter } = operation;
await context.operate('applicationPassport', {
id: await generateNewIdAsync(),
action: 'remove',
data: {},
filter: {
application: filter,
},
}, option);
return 1;
}
} as RemoveTrigger<EntityDict, 'application', BRC<EntityDict>>,
];
export default triggers;

View File

@ -14,6 +14,7 @@ import sessionMessageTriggers from './sessionMessage';
import wechatMenuTriggers from './wechatMenu';
import wechatPublicTag from './wechatPublicTag';
import wechatMpJump from './wechatMpJump';
import systemTriggers from './system';
// import accountTriggers from './account';
@ -36,4 +37,5 @@ export default [
...wechatMenuTriggers,
...wechatPublicTag,
...wechatMpJump,
...systemTriggers,
];

54
src/triggers/system.ts Normal file
View File

@ -0,0 +1,54 @@
import { generateNewIdAsync } from 'oak-domain/lib/utils/uuid';
import { CreateTrigger, Trigger, RemoveTrigger } from 'oak-domain/lib/types/Trigger';
import { EntityDict } from '../oak-app-domain/EntityDict';
import { desc } from '../oak-app-domain/Passport/Storage';
import { BRC } from '../types/RuntimeCxt';
import { assert } from 'oak-domain/lib/utils/assert';
const { attributes: { type: passportType } } = desc;
const triggers: Trigger<EntityDict, 'system', BRC<EntityDict>>[] = [
{
name: '添加system时添加相应的passport',
entity: 'system',
action: 'create',
when: 'before',
fn: async ({ operation }) => {
const { data } = operation;
assert(!(data instanceof Array));
data.passport$system = await Promise.all(
passportType.enumeration!.map(
async (type) => ({
id: await generateNewIdAsync(),
action: 'create',
data: {
id: await generateNewIdAsync(),
type,
enabled: false,
}
})
)
);
return 1;
}
} as CreateTrigger<EntityDict, 'system', BRC<EntityDict>>,
{
name: '当system删除前删除相关的passports',
entity: 'system',
action: 'remove',
when: 'before',
fn: async ({ operation }, context, option) => {
const { filter } = operation;
await context.operate('passport', {
id: await generateNewIdAsync(),
action: 'remove',
data: {},
filter: {
system: filter,
},
}, option);
return 1;
},
} as RemoveTrigger<EntityDict, 'system', BRC<EntityDict>>,
];
export default triggers;