diff --git a/packages/cloud-function-engine/src/function.ts b/packages/cloud-function-engine/src/function.ts index 6fc4351b84..7823b4c92f 100644 --- a/packages/cloud-function-engine/src/function.ts +++ b/packages/cloud-function-engine/src/function.ts @@ -1,6 +1,7 @@ import { FunctionEngine } from "." import { CloudFunctionStruct, FunctionContext, FunctionResult, RequireFuncType } from "./types" import * as ts from 'typescript' +import * as assert from "assert" /** * 云函数 @@ -76,6 +77,7 @@ export class CloudFunction { } constructor(data: CloudFunctionStruct) { + assert.ok(data) this._data = data } diff --git a/packages/cloud-function-engine/src/trigger-scheduler.ts b/packages/cloud-function-engine/src/trigger-scheduler.ts index 28801f6136..57d502acc9 100644 --- a/packages/cloud-function-engine/src/trigger-scheduler.ts +++ b/packages/cloud-function-engine/src/trigger-scheduler.ts @@ -16,7 +16,7 @@ export class TriggerScheduler { public init(triggers: Trigger[]) { this.log('init trigger scheduler') - this._triggers = triggers + this._triggers = triggers.filter(tri => tri.isEnabled) this.scheduleTimer() @@ -29,16 +29,14 @@ export class TriggerScheduler { } /** - * 更新指定 trigger: - * 1. 从库中获取最新 trigger 数据 - * 2. 若 status 为停用,则从当前调度表中删除 - * 3. 若 status 为启用,则将其最新数据更新或添加到当前调度列表中 + * 更新或添加指定 trigger: + * 1. 若 status 为停用,则从当前调度表中删除 + * 1. 若 status 为启用,则将其最新数据更新或添加到当前调度列表中 * @param triggerId */ public updateTrigger(trigger: Trigger): boolean { - console.log(trigger) // 停用状态,移除调度 - if (trigger.status === 0) { + if (!trigger.isEnabled) { return this.removeTrigger(trigger.id) } @@ -47,6 +45,11 @@ export class TriggerScheduler { if (index < 0) { this._triggers.push(trigger) } else { + // 若为定时器,则保留其 `最近一次执行时间` + if(trigger.isTimer) { + trigger.last_exec_time = this._triggers[index].last_exec_time ?? 0 + } + this._triggers[index] = trigger } diff --git a/packages/cloud-function-engine/src/trigger.ts b/packages/cloud-function-engine/src/trigger.ts index 09828873c6..1eb782f104 100644 --- a/packages/cloud-function-engine/src/trigger.ts +++ b/packages/cloud-function-engine/src/trigger.ts @@ -35,9 +35,16 @@ export class Trigger { // 上次执行时间 public last_exec_time: number - // 状态 + // 状态: 0 停用,1 启用 public status: number + /** + * 是否启用 + */ + get isEnabled() { + return this.status === 1 + } + /** * 是否为事件触发器 */