• cube.js 配置json schema


    通过对与cube 配置的json schema 学习我们可以知道cube.js 都包含了那些扩展点,可以方便系统的扩容以及优化

    内容

    const schemaOptions = Joi.object().keys({
      // server CreateOptions
      initApp: Joi.func(),
      webSockets: Joi.boolean(),
      http: Joi.object().keys({
        cors: Joi.object(),
      }),
      gracefulShutdown: Joi.number().min(0).integer(),
      // Additional from WebSocketServerOptions
      processSubscriptionsInterval: Joi.number(),
      webSocketsBasePath: Joi.string(),
      // server-core CoreCreateOptions
      dbType: dbTypes,
      externalDbType: dbTypes,
      schemaPath: Joi.string(),
      basePath: Joi.string(),
      devServer: Joi.boolean(),
      apiSecret: Joi.string(),
      logger: Joi.func(),
      // source
      dialectFactory: Joi.func(),
      driverFactory: Joi.func(),
      // external
      externalDialectFactory: Joi.func(),
      externalDriverFactory: Joi.func(),
      //
      cacheAndQueueDriver: Joi.string().valid('redis', 'memory'),
      contextToAppId: Joi.func(),
      contextToOrchestratorId: Joi.func(),
      contextToDataSourceId: Joi.func(),
      repositoryFactory: Joi.func(),
      checkAuth: Joi.func(),
      checkAuthMiddleware: Joi.func(),
      jwt: jwtOptions,
      queryTransformer: Joi.func(),
      queryRewrite: Joi.func(),
      preAggregationsSchema: Joi.alternatives().try(
        Joi.string(),
        Joi.func()
      ),
      schemaVersion: Joi.func(),
      extendContext: Joi.func(),
      // Scheduled refresh
      scheduledRefreshTimer: Joi.alternatives().try(
        Joi.boolean(),
        Joi.number().min(0).integer()
      ),
      scheduledRefreshTimeZones: Joi.array().items(Joi.string()),
      scheduledRefreshContexts: Joi.func(),
      scheduledRefreshConcurrency: Joi.number().min(1).integer(),
      // Compiler cache
      compilerCacheSize: Joi.number().min(0).integer(),
      updateCompilerCacheKeepAlive: Joi.boolean(),
      maxCompilerCacheKeepAlive: Joi.number().min(0).integer(),
      telemetry: Joi.boolean(),
      allowUngroupedWithoutPrimaryKey: Joi.boolean(),
      orchestratorOptions: Joi.alternatives().try(
        Joi.func(),
        Joi.object().keys({
          redisPrefix: Joi.string().allow(''),
          redisPoolOptions: Joi.object().keys({
            poolMin: Joi.number().min(0),
            poolMax: Joi.number().min(0),
            idleTimeoutSeconds: Joi.number().min(0),
            softIdleTimeoutSeconds: Joi.number().min(0),
            createClient: Joi.func(),
            destroyClient: Joi.func(),
            poolOptions: Joi.object().keys({
              maxWaitingClients: Joi.number(),
              testOnBorrow: Joi.bool(),
              testOnReturn: Joi.bool(),
              acquireTimeoutMillis: Joi.number(),
              fifo: Joi.bool(),
              priorityRange: Joi.number(),
              autostart: Joi.bool(),
              evictionRunIntervalMillis: Joi.number().min(0),
              numTestsPerEvictionRun: Joi.number().min(1),
              softIdleTimeoutMillis: Joi.number().min(0),
              idleTimeoutMillis: Joi.number().min(0),
            })
          }),
          continueWaitTimeout: Joi.number().min(0).integer(),
          skipExternalCacheAndQueue: Joi.boolean(),
          queryCacheOptions: Joi.object().keys({
            refreshKeyRenewalThreshold: Joi.number().min(0).integer(),
            backgroundRenew: Joi.boolean(),
            queueOptions: schemaQueueOptions,
            externalQueueOptions: schemaQueueOptions
          }),
          preAggregationsOptions: {
            queueOptions: schemaQueueOptions,
            externalRefresh: Joi.boolean(),
          },
          rollupOnlyMode: Joi.boolean()
        })
      ),
      allowJsDuplicatePropsInSchema: Joi.boolean(),
      dashboardAppPath: Joi.string(),
      dashboardAppPort: Joi.number(),
      sqlCache: Joi.boolean(),
      livePreview: Joi.boolean(),
      // SQL API
      sqlPort: Joi.number(),
      pgSqlPort: Joi.number(),
      checkSqlAuth: Joi.func(),
      sqlUser: Joi.string(),
      sqlPassword: Joi.string(),
      // Additional system flags
      serverless: Joi.boolean(),
      allowNodeRequire: Joi.boolean(),
    });

    参考资料

    https://github.com/cube-js/cube.js/blob/36b65ef40415a3fdf6cbbcc0a6d1a6b345add1c5/packages/cubejs-server-core/src/core/optionsValidate.ts

  • 相关阅读:
    #include <functional>
    3.3内联函数
    如何查看内存占用和运行速度
    属性和方法的动态绑定和限制
    __slots__节约空间
    函数进阶之一等对象
    python继承之super
    python的方法VSjava方法
    python面向对象基础(三)内置方法 __xx__
    python面向对象基础(二)反射
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/16365292.html
Copyright © 2020-2023  润新知