cube.js 自定义驱动 static dialectClass 方法说明

实际上官方文档有过描述关于此方法的作用,可以进行自动query 方言的转换处理,同时官方不少插件也使用了此功能
以下做一个简单的说明

作用

  • 主要是对于dbtype 可以方便的找到数据库查询方言
    参考开发
 
export class OceanBaseDriver extends BaseDriver implements DriverInterface {
  /**
   * Returns default concurrency value.
   */
  public static getDefaultConcurrency(): number {
    return 2;
  }
 
  public static dialectClass() {
    return OceanBaseQuery;
  }

一些问题

  • 直接通过dbtype 可以方便的找到query 转换处理(一般是通过环境变量传递的,通过cube.js 的会有问题) CUBEJS_DB_TYPE=oceanbase
  • 对于多租户模式的数据库以及其他模式的推荐还是通过cube.js 定义明确方言处理
    参考
module.exports = {
    dialectFactory: (dataSource) => {
        return OceanBaseQuery
    },
    dbType: ({ dataSource } = {}) => {
       return "oceanbase"
  • 对于基于ts 开发的,建议对于query 以及driver 都导出(或者参考官方的玩法, 入口重新export 了)
    参考如下(ts 模式)
 
import { OceanBaseDriver } from './OceanBaseDriver';
 
import { OceanBaseQuery } from './OceanBaseQuery';
 
export * from "./OceanBaseDriver"
 
export * from "./OceanBaseQuery"
 
export default  OceanBaseDriver
 
export {
    OceanBaseQuery,
    OceanBaseDriver
}

官方手工重新导出模式

const fromExports = require('./dist/src');
const { QuestDriver } = require('./dist/src/QuestDriver');
 
const toExport = QuestDriver;
 
// eslint-disable-next-line no-restricted-syntax
for (const [key, module] of Object.entries(fromExports)) {
  toExport[key] = module;
}
module.exports = toExport;

说明

static dialectClass 是一个比较方便的静态方法,可以简化driver 的开发,但是实际上也是有问题的,对于自己开发的driver 推荐还是都暴露处理,为了
方便也可以提供static dialectClass 实现

参考资料

https://github.com/cube-js/cube.js/blob/master/CONTRIBUTING.md
https://github.com/cube-js/cube.js/blob/cfa4b4780f0b1549544bf26e2fb843d69ccdc981/packages/cubejs-questdb-driver/src/QuestDriver.ts

posted on   荣锋亮  阅读(31)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2022-03-01 minio 支持移除server pool
2022-03-01 Metriql 无头bi 工具
2022-03-01 dremio arrow flight 协议server实现——DremioFlightProducer代码简单介绍
2022-03-01 dremio arrow flight 协议实现——简单说明
2022-03-01 haproxy dataplaneapi 2.5 发布
2020-03-01 pgspider 集成hypopg 虚拟索引扩展
2018-03-01 goreman 多进程管理工具

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示