From 8f753b8f5e6e95f128e9d617dda46bc8aea2df76 Mon Sep 17 00:00:00 2001 From: maslow Date: Fri, 11 Jun 2021 14:57:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E8=B7=A8=E4=BA=91?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E7=9A=84=E5=85=A8=E5=B1=80=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/db.ts | 8 ++++++-- src/lib/faas/invoke.ts | 41 +++++++++++++++++++++++------------------ src/lib/faas/trigger.ts | 2 ++ src/lib/faas/types.ts | 1 + 4 files changed, 32 insertions(+), 20 deletions(-) diff --git a/src/lib/db.ts b/src/lib/db.ts index b81290074f..7e0edb35e3 100644 --- a/src/lib/db.ts +++ b/src/lib/db.ts @@ -9,8 +9,12 @@ export const accessor = new MongoAccessor(Config.db.database, Config.db.uri, { }) accessor.setLogger(getLogger('server:db', 'warning')) - accessor.init() // 获取 db 对象 -export const db = getDb(accessor) \ No newline at end of file +export const db = getDb(accessor) + +// 创建新 db 实例 +export function createDb() { + return getDb(accessor) +} \ No newline at end of file diff --git a/src/lib/faas/invoke.ts b/src/lib/faas/invoke.ts index 8c9ea645bc..cb341c8b44 100644 --- a/src/lib/faas/invoke.ts +++ b/src/lib/faas/invoke.ts @@ -1,27 +1,10 @@ import { FunctionEngine, scheduler } from "." -import { db } from '../../lib/db' +import { createDb, db } from '../../lib/db' import { LocalFileStorage } from "../storage/local_file_storage" import request from 'axios' import Config from "../../config" import { CloudFunctionStruct, CloudSdkInterface, FunctionContext } from "./types" -/** - * 创建云函数 cloud sdk - * @returns - */ -function createCloudSdk(): CloudSdkInterface { - - const less: CloudSdkInterface = { - database: () => db, - storage: (namespace: string) => new LocalFileStorage(Config.LOCAL_STORAGE_ROOT_PATH, namespace), - fetch: request, - invoke: _invokeInFunction, - emit: (event: string, param: any) => scheduler.emit(event, param) - } - - return less -} - /** * 调用云函数 */ @@ -80,6 +63,28 @@ export async function getCloudFunctionById(func_id: string): Promise() + +/** + * 创建云函数 cloud sdk + * @returns + */ +function createCloudSdk(): CloudSdkInterface { + + const less: CloudSdkInterface = { + database: () => createDb(), + storage: (namespace: string) => new LocalFileStorage(Config.LOCAL_STORAGE_ROOT_PATH, namespace), + fetch: request, + invoke: _invokeInFunction, + emit: (event: string, param: any) => scheduler.emit(event, param), + shared: _shared_preference + } + + return less +} + /** * 在云函数中[调用云函数]的函数 */ diff --git a/src/lib/faas/trigger.ts b/src/lib/faas/trigger.ts index 10debba8a8..4b95f5128d 100644 --- a/src/lib/faas/trigger.ts +++ b/src/lib/faas/trigger.ts @@ -100,6 +100,8 @@ export class TriggerScheduler { this._triggers = await this.loadTriggers() this.scheduleTimer() + + this.emit('triggers.init') } public destroy() { diff --git a/src/lib/faas/types.ts b/src/lib/faas/types.ts index a7018fae9a..1e4a57212e 100644 --- a/src/lib/faas/types.ts +++ b/src/lib/faas/types.ts @@ -16,6 +16,7 @@ export interface CloudSdkInterface { database(): Db, invoke: InvokeFunctionType emit: EmitFunctionType + shared: Map } // vm run context (global)