freeRoutine增加了socket入口

This commit is contained in:
Xu Chang 2024-11-13 16:25:28 +08:00
parent b36268f1c7
commit 9ad4b0ef6f
3 changed files with 20 additions and 11 deletions

13
lib/types/Timer.d.ts vendored
View File

@ -1,18 +1,21 @@
import { RecurrenceRule, RecurrenceSpecDateRange, RecurrenceSpecObjLit } from 'node-schedule';
import { EntityDict } from './Entity';
import { EntityDict, OperationResult } from './Entity';
import { EntityDict as BaseEntityDict } from '../base-app-domain';
import { AsyncContext } from '../store/AsyncRowStore';
import { Watcher } from './Watcher';
import { OperationResult } from '.';
type FreeOperateFn<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = (context: Cxt) => Promise<OperationResult<ED>>;
import { Namespace } from 'socket.io';
type FreeRoutineFn<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = (context: Cxt, env: {
socket: Namespace;
}) => Promise<OperationResult<ED>>;
type FreeTimerFn<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = (context: Cxt) => Promise<OperationResult<ED>>;
export type FreeRoutine<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = {
name: string;
routine: FreeOperateFn<ED, Cxt>;
routine: FreeRoutineFn<ED, Cxt>;
};
export type FreeTimer<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = {
name: string;
cron: RecurrenceRule | RecurrenceSpecDateRange | RecurrenceSpecObjLit | Date | string | number;
timer: FreeOperateFn<ED, Cxt>;
timer: FreeTimerFn<ED, Cxt>;
singleton?: true;
};
export type Routine<ED extends EntityDict & BaseEntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>> = FreeRoutine<ED, Cxt> | Watcher<ED, T, Cxt>;

View File

@ -45,6 +45,7 @@
"dependencies": {
"dayjs": "^1.11.9",
"node-schedule": "^2.1.1",
"socket.io": "^4.7.2",
"uuid": "^9.0.0",
"webidl-conversions": "^5.0.0"
}

View File

@ -1,23 +1,28 @@
import { RecurrenceRule, RecurrenceSpecDateRange, RecurrenceSpecObjLit } from 'node-schedule';
import { EntityDict } from './Entity';
import { EntityDict, OperationResult } from './Entity';
import { EntityDict as BaseEntityDict } from '../base-app-domain';
import { AsyncContext } from '../store/AsyncRowStore';
import { Watcher } from './Watcher';
import { OperationResult } from '.';
import { Namespace } from 'socket.io';
type FreeOperateFn<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = (
context: Cxt
type FreeRoutineFn<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = (
context: Cxt,
env: {
socket: Namespace;
}
) => Promise<OperationResult<ED>>;
type FreeTimerFn<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = (context: Cxt) => Promise<OperationResult<ED>>;
export type FreeRoutine<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = {
name: string;
routine: FreeOperateFn<ED, Cxt>;
routine: FreeRoutineFn<ED, Cxt>;
};
export type FreeTimer<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = {
name: string;
cron: RecurrenceRule | RecurrenceSpecDateRange | RecurrenceSpecObjLit | Date | string | number;
timer: FreeOperateFn<ED, Cxt>;
timer: FreeTimerFn<ED, Cxt>;
singleton?: true; // 置singleton意味着在集群环境中只有一个进程会去执行
};