跳到主要内容

TypeORM – 谷歌夏季编程大赛(GSoC)项目想法列表

本文档概述了 TypeORM 的潜在 GSoC 项目想法。每个想法都包含描述、目标、预期成果以及难度等级。


TypeORM 中的一等多态关联

描述

TypeORM 当前缺乏对多态关联(单个关系指向多个实体类型)的原生支持。用户只能依赖难以类型推断、容易出错且跨数据库不一致的变通方案。

导师

目标

  • 设计 TypeORM 支持的一等多态关联 API
  • 保证与现有关系装饰器兼容
  • 提供迁移和模式同步支持

预期成果

  • 新的多态关联装饰器
  • QueryBuilder 支持多态连接查询
  • 清晰的文档和示例
  • 向后兼容的实现

难度

中等 - 预期耗时 175 小时

所需技能

TypeScript、ORM 内部机制、SQL 模式设计


TypeORM 中改进类型安全和推断

描述

虽然 TypeORM 使用 TypeScript 编写,但在许多地方(关联、查询构建器结果、仓库方法)类型较弱。改进类型推断将大幅提升开发体验和正确性。

导师

目标

  • 改进关联类型推断(懒加载与 eager 关联)
  • 强类型的 QueryBuilder 返回结果
  • 减少公共 API 中的 any 使用
  • 改善 RepositoryEntityManager 的泛型设计

预期成果

  • 更佳的编译时类型保障
  • 减少运行时错误
  • 逐步且非破坏性的提升
  • 推荐类型使用模式的文档

难度

中等 - 预期耗时 175 小时

所需技能

高级 TypeScript、泛型、库 API 设计


向量支持:类型、索引及跨数据库搜索

描述

向量嵌入在现代应用(AI、搜索、推荐)中日益常见。虽然 TypeORM 部分支持向量列类型,但缺乏针对跨数据库的统一、完整的向量存储、索引及查询解决方案。

本项目旨在为 TypeORM 提供端到端的向量支持,涵盖向量列类型、数据库特定映射、向量索引及高层向量搜索抽象。

导师

目标

  • 为剩余数据库(如 Oracle)添加向量列支持
  • 调研 SQLite 限制,尽可能支持 libsql 向量
  • 定义一致的跨数据库向量列 API
  • 实现数据库支持的向量索引
  • 通过 QueryBuilder 暴露向量相似度查询
  • 在仓库之上实现高层向量存储抽象
  • 可选:探索知识图谱风格查询(如类 SPARQL API)

预期成果

  • 新的 @Column({ type: "vector" }) 跨数据库支持
  • 数据库特定向量映射、降级方案及限制说明
  • 跨数据库向量索引支持
  • 高层向量搜索及相似度查询 API
  • 可扩展架构支持未来 AI 和搜索相关功能
  • 清晰文档和示例

难度

中等 — 预期耗时 175 小时

所需技能

SQL 方言、数据库内部机制、TypeORM 驱动架构、索引策略、查询优化、API 设计


实体定义 API 的模块化

导师

描述

TypeORM 目前支持两种定义实体的方式:基于类的实体(装饰器)与实体模式(Entity Schema)。随着时间推移,这两种方式已逐渐分化,实体模式的功能和类型安全往往落后于基于类的实体。

本项目聚焦于提取和模块化实体定义方式,将其拆解成更清晰、隔离的组件,目的是保持两者同步并为未来架构改进奠定基础。项目不会进行完整 mono-repo 重构,而是针对一部分明确且可行的工作。

目标

  • 将实体定义逻辑提取至明确分离的模块或包
  • 改善基于类实体与实体模式间的功能一致性
  • 探索具备强类型推断的函数式实体定义 API
  • 减少实体定义方式间的代码重复
  • 为未来模块化(如 CLI、日志、缓存)奠定基础

预期成果

  • 更好同步实体模式与基于类实体的功能
  • 更清晰的实体元数据定义内部抽象
  • 非基于类实体定义的类型推断能力提升
  • 明确边界,使未来重构和模块化更安全

难度

困难 - 预期耗时 350 小时

所需技能

TypeScript、TypeORM 元数据系统、API 设计、大型代码库重构


自定义驱动开发的 SQL 方言抽象

描述

TypeORM 中新增或维护数据库驱动目前较为复杂且紧耦合于现有驱动实现。引入更清晰的 SQL 方言抽象能更容易支持新数据库并减少驱动间重复代码。

本项目旨在定义并引入 SQL 方言层,封装数据库特定的 SQL 行为,促进新驱动开发并提升 TypeORM 内部关注点分离。

导师

目标

  • 设计捕获数据库特性行为的 SQL 方言抽象
  • 从现有驱动提取通用 SQL 生成逻辑
  • 定义清晰扩展点以支持实现新方言
  • 撰写如何基于方言系统构建自定义驱动的文档

预期成果

  • 明确定义的 SQL 方言接口
  • 减少现有驱动间重复代码
  • 提升现有驱动的可维护性
  • 为社区贡献数据库驱动提供清晰路径

难度

困难 - 预期耗时 350 小时

所需技能

SQL 方言、数据库内部机制、TypeScript、TypeORM 驱动架构


社区征集项目想法

TypeORM 欢迎贡献者和社区成员提出 GSoC 项目想法。

如果你有 TypeORM 经验,发现了痛点、缺失功能或架构改进,鼓励你提交 GSoC 项目建议。

建议内容可包括(但不限于):

  • 现有驱动或数据库支持改进
  • 性能优化
  • 开发者体验及工具增强
  • 文档或测试基础设施改进
  • 新功能

建议应包含:

  • 简短的问题陈述
  • 预期成果和范围
  • 预计难度
  • 相关技术领域(TypeScript、SQL、驱动等)

社区提交的想法将由维护者审查,可能会加入官方 GSoC 项目列表。


现代迁移工具和快照

描述

TypeORM 的迁移工作流目前以 CLI 为核心,在基于 TypeScript 的项目中使用较为笨重,限制了高级用例。此外,迁移历史较长的项目在新环境数据库初始化时启动缓慢且容易出错。

本项目旨在通过引入可编程迁移生成 API 及可选的模式快照,现代化 TypeORM 迁移工具。这些改进将使迁移生成更灵活,并允许通过快照快速初始化新数据库,避免回放所有历史迁移。

导师

目标

  • 引入可编程 API 以无需依赖 CLI 生成迁移
  • 支持定制迁移模板
  • 设计表示数据库最终结构的模式快照机制
  • 允许使用快照启动新数据库同时保留迁移历史
  • 确保与现有迁移工作流兼容

预期成果

  • 改善基于 TypeScript 和非 CLI 工作流的开发体验
  • 大型项目数据库初始化更快更稳定
  • 更灵活的迁移生成及模板机制
  • 清晰文档及推荐实践

难度

中等 - 预期耗时 175 小时

所需技能

TypeScript、SQL、TypeORM 迁移系统、CLI 内部机制、API 与工具设计


入门指南

有意作为 Google Summer of Code 一员贡献 TypeORM 的学生,建议尽早参与。熟悉代码库、贡献流程和社区实践是提交提案前的强烈建议。

入门步骤:

  • 加入我们的 Discord 服务器
  • 阅读 CONTRIBUTING.md
  • 浏览 TypeORM 仓库及文档,了解架构和支持的数据库。
  • 尝试修复一个小问题或改进文档,熟悉贡献流程。