lightdash 源码简单介绍

以下简单介绍下lightdash

lightdash 源码结构

代码基于yarn workspace 模式,对于数据库访问为了提升性能基于了odbc(当然也是有其他原因的,比如本来就不能很好使用js驱动的)
核心代码目录都在packages 中

 
backend // 后端接口项目,比较核心
common // 公共部分,包含了类型,openapi 接口定义
e2e // 端到端测试部分
frontend // 前端ui 部分

api 接口结构

主要入口,包含了模块的依赖
index.ts

 

 


apiV1Router (接口的入口,依赖的模块是不少的)

 

 

lightdash 项目适配处理

代码主要在packages/backend/src/projectAdapters
基本类(提供了对于项目操作的包装,以及接口定义)

 

 


参考gitlab 实现 (基于simple-git 进行git 操作)

 

 

dbt 集成处理

packages/backend/src/projectAdapters/dbtLocalProjectAdapter.ts

 
export class DbtLocalProjectAdapter extends DbtBaseProjectAdapter {
    constructor({
        warehouseClient,
        projectDir,
        profilesDir,
        target,
        profileName,
        environment,
    }: DbtLocalProjectAdapterArgs) {
        const dbtClient = new DbtCliClient({
            dbtProjectDirectory: projectDir,
            dbtProfilesDirectory: profilesDir,
            environment: environment || {},
            profileName,
            target,
        });
        super(dbtClient, warehouseClient);
    }
}

DbtCliClient
实际上就是一个基于了cli 包装的dbt 操作(当然dbt 是支持rpc 的,lightdash 也包装了rpc 操作的包,从dbt 目前官方介绍,会有大的变动)
packages/backend/src/dbt/dbtCliClient.ts

说明

lightdash 的源码并不是很难,学习下还是比较有意义的,后续对于内部细节处理再好好研究下,同时webstorm 的依赖图是一个好东西,很方便值得使用

参考资料

https://github.com/lightdash/lightdash
https://www.npmjs.com/package/execa
https://www.npmjs.com/package/simple-git
https://github.com/sindresorhus/execa

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

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2020-03-20 node-replay 一个很不错的nodejs api 录制以及回放包
2017-03-20 caddy server && caddyfile
2017-03-20 caddy server 默认https && http2的验证
2016-03-20 Windows Service Wrapper
2014-03-20 web开发的一些总结
2014-03-20 web 纯 javascript 的MVC 实现的简单实践

导航

< 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
点击右上角即可分享
微信分享提示