2.0.1
This commit is contained in:
parent
d4a71aba04
commit
487a3720ea
|
|
@ -1,7 +1,8 @@
|
|||
import { Context, EntityDict, OperateOption, SelectOption, OperationResult, SelectRowShape } from "oak-domain/lib/types";
|
||||
import { EntityDict, OperateOption, SelectOption, OperationResult } from "oak-domain/lib/types";
|
||||
import { AmapInstance } from "oak-external-sdk";
|
||||
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
|
||||
export declare type CommonAspectDict<ED extends EntityDict & BaseEntityDict, Cxt extends Context<ED>> = {
|
||||
import { AsyncContext } from "oak-domain/lib/store/AsyncRowStore";
|
||||
export declare type CommonAspectDict<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = {
|
||||
operate: <T extends keyof ED, OP extends OperateOption>(params: {
|
||||
entity: T;
|
||||
operation: ED[T]['Operation'] | ED[T]['Operation'][];
|
||||
|
|
@ -13,7 +14,7 @@ export declare type CommonAspectDict<ED extends EntityDict & BaseEntityDict, Cxt
|
|||
option?: OP;
|
||||
getCount?: true;
|
||||
}, context: Cxt) => Promise<{
|
||||
data: SelectRowShape<ED[T]['Schema'], S['data']>[];
|
||||
data: Partial<ED[T]['Schema']>[];
|
||||
count?: number;
|
||||
}>;
|
||||
count: <T extends keyof ED, S extends ED[T]['Selection'], OP extends SelectOption>(params: {
|
||||
|
|
|
|||
|
|
@ -1,26 +1,27 @@
|
|||
import { OperateOption, EntityDict, Context, SelectOption, SelectRowShape } from 'oak-domain/lib/types';
|
||||
import { OperateOption, EntityDict, SelectOption } from 'oak-domain/lib/types';
|
||||
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
|
||||
export declare function operate<ED extends BaseEntityDict & EntityDict, T extends keyof ED, Cxt extends Context<ED>, OP extends OperateOption>(params: {
|
||||
import { AsyncContext } from 'oak-domain/lib/store/AsyncRowStore';
|
||||
export declare function operate<ED extends BaseEntityDict & EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>, OP extends OperateOption>(params: {
|
||||
entity: T;
|
||||
operation: ED[T]['Operation'] | ED[T]['Operation'][];
|
||||
option?: OP;
|
||||
}, context: Cxt): Promise<import("oak-domain/lib/types").OperationResult<ED> | Awaited<import("oak-domain/lib/types").OperationResult<ED>>[]>;
|
||||
export declare function select<ED extends EntityDict, T extends keyof ED, Cxt extends Context<ED>, S extends ED[T]['Selection'], OP extends SelectOption>(params: {
|
||||
export declare function select<ED extends EntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>, OP extends SelectOption>(params: {
|
||||
entity: T;
|
||||
selection: S;
|
||||
selection: ED[T]['Selection'];
|
||||
option?: OP;
|
||||
getCount?: true;
|
||||
maxCount?: number;
|
||||
}, context: Cxt): Promise<{
|
||||
data: SelectRowShape<ED[T]['Schema'], S['data']>[];
|
||||
data: Partial<ED[T]['Schema']>[];
|
||||
count?: number | undefined;
|
||||
}>;
|
||||
export declare function fetchRows<ED extends EntityDict & BaseEntityDict, OP extends SelectOption, Cxt extends Context<ED>>(params: Array<{
|
||||
export declare function fetchRows<ED extends EntityDict & BaseEntityDict, OP extends SelectOption, Cxt extends AsyncContext<ED>>(params: Array<{
|
||||
entity: keyof ED;
|
||||
selection: ED[keyof ED]['Selection'];
|
||||
option?: OP;
|
||||
}>, context: Cxt): Promise<void>;
|
||||
export declare function count<ED extends EntityDict & BaseEntityDict, T extends keyof ED, Cxt extends Context<ED>, S extends ED[T]['Selection'], OP extends SelectOption>(params: {
|
||||
export declare function count<ED extends EntityDict & BaseEntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>, S extends ED[T]['Selection'], OP extends SelectOption>(params: {
|
||||
entity: T;
|
||||
selection: S;
|
||||
option?: OP;
|
||||
|
|
|
|||
14
lib/crud.js
14
lib/crud.js
|
|
@ -4,7 +4,7 @@ exports.count = exports.fetchRows = exports.select = exports.operate = void 0;
|
|||
const types_1 = require("oak-domain/lib/types");
|
||||
async function operate(params, context) {
|
||||
const { entity, operation, option } = params;
|
||||
const userId = await context.getCurrentUserId();
|
||||
const userId = context.getCurrentUserId();
|
||||
if (!userId) {
|
||||
// operate默认必须用户登录
|
||||
throw new types_1.OakUnloggedInException();
|
||||
|
|
@ -12,23 +12,23 @@ async function operate(params, context) {
|
|||
if (operation instanceof Array) {
|
||||
const result = [];
|
||||
for (const oper of operation) {
|
||||
const r = await context.rowStore.operate(entity, oper, context, option || {});
|
||||
const r = await context.operate(entity, oper, option || {});
|
||||
result.push(r);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return await context.rowStore.operate(entity, operation, context, option || {});
|
||||
return await context.operate(entity, operation, option || {});
|
||||
}
|
||||
exports.operate = operate;
|
||||
async function select(params, context) {
|
||||
const { entity, selection, option, getCount, maxCount } = params;
|
||||
const { result: data } = await context.rowStore.select(entity, selection, context, option || {});
|
||||
const data = await context.select(entity, selection, option || {});
|
||||
const result = {
|
||||
data,
|
||||
};
|
||||
if (getCount) {
|
||||
const { filter } = selection;
|
||||
const count = await context.rowStore.count(entity, Object.assign({}, { filter, count: maxCount || 1000 }), context, option || {});
|
||||
const count = await context.count(entity, Object.assign({}, { filter, count: maxCount || 1000 }), option || {});
|
||||
Object.assign(result, {
|
||||
count,
|
||||
});
|
||||
|
|
@ -37,13 +37,13 @@ async function select(params, context) {
|
|||
}
|
||||
exports.select = select;
|
||||
async function fetchRows(params, context) {
|
||||
await Promise.all(params.map((ele) => context.rowStore.select(ele.entity, ele.selection, context, ele.option || {})));
|
||||
await Promise.all(params.map((ele) => context.select(ele.entity, ele.selection, ele.option || {})));
|
||||
}
|
||||
exports.fetchRows = fetchRows;
|
||||
async function count(params, context) {
|
||||
const { entity, selection, option } = params;
|
||||
const { filter } = selection;
|
||||
const count = await context.rowStore.count(entity, Object.assign({}, { filter }), context, option || {});
|
||||
const count = await context.count(entity, Object.assign({}, { filter }), option || {});
|
||||
return count;
|
||||
}
|
||||
exports.count = count;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "oak-common-aspect",
|
||||
"version": "1.0.6",
|
||||
"version": "2.0.1",
|
||||
"description": "",
|
||||
"author": {
|
||||
"name": "XuChang"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
import { Context, EntityDict, OperateOption, SelectOption, OperationResult, SelectRowShape } from "oak-domain/lib/types";
|
||||
import { EntityDict, OperateOption, SelectOption, OperationResult } from "oak-domain/lib/types";
|
||||
import { AmapInstance } from "oak-external-sdk";
|
||||
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
|
||||
import { AsyncContext } from "oak-domain/lib/store/AsyncRowStore";
|
||||
|
||||
|
||||
export type CommonAspectDict<ED extends EntityDict & BaseEntityDict, Cxt extends Context<ED>> = {
|
||||
export type CommonAspectDict<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = {
|
||||
operate: <T extends keyof ED, OP extends OperateOption>(
|
||||
params: {
|
||||
entity: T;
|
||||
|
|
@ -20,7 +21,7 @@ export type CommonAspectDict<ED extends EntityDict & BaseEntityDict, Cxt extends
|
|||
params: { entity: T; selection: S; option?: OP; getCount?: true },
|
||||
context: Cxt
|
||||
) => Promise<{
|
||||
data: SelectRowShape<ED[T]['Schema'], S['data']>[];
|
||||
data: Partial<ED[T]['Schema']>[];
|
||||
count?: number;
|
||||
}>;
|
||||
count: <
|
||||
|
|
|
|||
36
src/crud.ts
36
src/crud.ts
|
|
@ -1,17 +1,16 @@
|
|||
import {
|
||||
OperateOption,
|
||||
EntityDict,
|
||||
Context,
|
||||
SelectOption,
|
||||
SelectRowShape,
|
||||
OakUnloggedInException,
|
||||
} from 'oak-domain/lib/types';
|
||||
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
|
||||
import { AsyncContext } from 'oak-domain/lib/store/AsyncRowStore';
|
||||
|
||||
export async function operate<
|
||||
ED extends BaseEntityDict & EntityDict,
|
||||
T extends keyof ED,
|
||||
Cxt extends Context<ED>,
|
||||
Cxt extends AsyncContext<ED>,
|
||||
OP extends OperateOption
|
||||
>(
|
||||
params: {
|
||||
|
|
@ -22,7 +21,7 @@ export async function operate<
|
|||
context: Cxt
|
||||
) {
|
||||
const { entity, operation, option } = params;
|
||||
const userId = await context.getCurrentUserId();
|
||||
const userId = context.getCurrentUserId();
|
||||
if (!userId) {
|
||||
// operate默认必须用户登录
|
||||
throw new OakUnloggedInException();
|
||||
|
|
@ -31,20 +30,18 @@ export async function operate<
|
|||
if (operation instanceof Array) {
|
||||
const result = [];
|
||||
for (const oper of operation) {
|
||||
const r = await context.rowStore.operate(
|
||||
const r = await context.operate(
|
||||
entity,
|
||||
oper,
|
||||
context,
|
||||
option || {}
|
||||
);
|
||||
result.push(r);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return await context.rowStore.operate(
|
||||
return await context.operate(
|
||||
entity,
|
||||
operation,
|
||||
context,
|
||||
option || {}
|
||||
);
|
||||
}
|
||||
|
|
@ -52,13 +49,12 @@ export async function operate<
|
|||
export async function select<
|
||||
ED extends EntityDict,
|
||||
T extends keyof ED,
|
||||
Cxt extends Context<ED>,
|
||||
S extends ED[T]['Selection'],
|
||||
Cxt extends AsyncContext<ED>,
|
||||
OP extends SelectOption
|
||||
>(
|
||||
params: {
|
||||
entity: T;
|
||||
selection: S;
|
||||
selection: ED[T]['Selection'];
|
||||
option?: OP;
|
||||
getCount?: true;
|
||||
maxCount?: number;
|
||||
|
|
@ -66,24 +62,22 @@ export async function select<
|
|||
context: Cxt
|
||||
) {
|
||||
const { entity, selection, option, getCount, maxCount } = params;
|
||||
const { result: data } = await context.rowStore.select(
|
||||
const data = await context.select(
|
||||
entity,
|
||||
selection,
|
||||
context,
|
||||
option || {}
|
||||
);
|
||||
const result = {
|
||||
data,
|
||||
} as {
|
||||
data: SelectRowShape<ED[T]['Schema'], S['data']>[];
|
||||
data: Partial<ED[T]['Schema']>[];
|
||||
count?: number;
|
||||
};
|
||||
if (getCount) {
|
||||
const { filter } = selection;
|
||||
const count = await context.rowStore.count(
|
||||
const count = await context.count(
|
||||
entity,
|
||||
Object.assign({}, { filter, count: maxCount || 1000 }),
|
||||
context,
|
||||
option || {}
|
||||
);
|
||||
Object.assign(result, {
|
||||
|
|
@ -96,7 +90,7 @@ export async function select<
|
|||
export async function fetchRows<
|
||||
ED extends EntityDict & BaseEntityDict,
|
||||
OP extends SelectOption,
|
||||
Cxt extends Context<ED>
|
||||
Cxt extends AsyncContext<ED>,
|
||||
>(
|
||||
params: Array<{
|
||||
entity: keyof ED;
|
||||
|
|
@ -107,10 +101,9 @@ export async function fetchRows<
|
|||
) {
|
||||
await Promise.all(
|
||||
params.map((ele) =>
|
||||
context.rowStore.select(
|
||||
context.select(
|
||||
ele.entity,
|
||||
ele.selection,
|
||||
context,
|
||||
ele.option || {}
|
||||
)
|
||||
)
|
||||
|
|
@ -120,7 +113,7 @@ export async function fetchRows<
|
|||
export async function count<
|
||||
ED extends EntityDict & BaseEntityDict,
|
||||
T extends keyof ED,
|
||||
Cxt extends Context<ED>,
|
||||
Cxt extends AsyncContext<ED>,
|
||||
S extends ED[T]['Selection'],
|
||||
OP extends SelectOption
|
||||
>(
|
||||
|
|
@ -133,10 +126,9 @@ export async function count<
|
|||
) {
|
||||
const { entity, selection, option } = params;
|
||||
const { filter } = selection;
|
||||
const count = await context.rowStore.count(
|
||||
const count = await context.count(
|
||||
entity,
|
||||
Object.assign({}, { filter }),
|
||||
context,
|
||||
option || {}
|
||||
);
|
||||
return count;
|
||||
|
|
|
|||
Loading…
Reference in New Issue