Перейти к основному содержанию

TypeORM – Список идей для Google Summer of Code (GSoC)

Неофициальный Бета-перевод

Эта страница переведена PageTurner AI (бета). Не одобрена официально проектом. Нашли ошибку? Сообщить о проблеме →

В этом документе представлены потенциальные проектные идеи GSoC для TypeORM. Каждая идея включает описание, цели, ожидаемые результаты и уровень сложности.


Первоклассная поддержка полиморфных отношений в TypeORM

Описание

TypeORM в настоящее время не поддерживает нативно полиморфные отношения (одиночная связь, указывающая на несколько типов сущностей). Пользователи вынуждены применять обходные решения, которые сложно типизировать, ненадёжны и не согласованы между различными базами данных.

Менторы

Цели

  • Разработать первоклассный API для полиморфных отношений в TypeORM

  • Обеспечить совместимость с существующими декораторами отношений

  • Реализовать поддержку миграций и синхронизации схемы

Ожидаемые результаты

  • Новые декораторы для полиморфных отношений

  • Поддержка полиморфных соединений в QueryBuilder

  • Чёткая документация и примеры

  • Обратно совместимая реализация

Сложность

Средняя – Ориентировочно 175 часов

Необходимые навыки

TypeScript, внутреннее устройство ORM, проектирование SQL-схем


Улучшение типобезопасности и вывода типов в TypeORM

Описание

Несмотря на написание на TypeScript, в TypeORM присутствуют области со слабой типизацией (отношения, результаты QueryBuilder, методы репозиториев). Улучшение вывода типов значительно повысит опыт разработчиков и корректность кода.

Менторы

Цели

  • Улучшить вывод типов для отношений (ленивых и жадных)

  • Строгая типизация результатов QueryBuilder

  • Сократить использование any в публичных API

  • Улучшить дженерики для Repository и EntityManager

Ожидаемые результаты

  • Улучшенные гарантии на этапе компиляции

  • Меньше ошибок времени выполнения

  • Постепенные улучшения без обратной несовместимости

  • Документация по рекомендуемым паттернам типизации

Сложность

Средняя – Ориентировочно 175 часов

Необходимые навыки

Продвинутый TypeScript, дженерики, проектирование API библиотек


Поддержка векторов: типы, индексирование и поиск в разных базах данных

Описание

Векторные представления всё чаще используются в современных приложениях (ИИ, поиск, рекомендации). Хотя TypeORM частично поддерживает векторные типы колонок, в нём отсутствует единое комплексное решение для хранения векторов, их индексирования и запросов в разных базах данных.

Этот проект направлен на реализацию сквозной поддержки векторов в TypeORM, включая типы векторных колонок, специфичные для СУБД маппинги, векторное индексирование и высокоуровневые абстракции для векторного поиска.

Менторы

Цели

  • Добавить поддержку векторных колонок для оставшихся СУБД (например, Oracle)

  • Исследовать ограничения SQLite и добавить поддержку векторов libsql там, где это возможно

  • Определить согласованный кроссплатформенный API для векторных колонок

  • Реализовать поддержку векторных индексов там, где это позволяют базы данных

  • Предоставить доступ к векторным запросам подобия через QueryBuilder

  • Реализовать высокоуровневую абстракцию векторного хранилища поверх репозиториев

  • Опционально: исследовать запросы в стиле knowledge-graph (например, API вдохновлённые SPARQL)

Ожидаемые результаты

  • Новая поддержка @Column({ type: "vector" }) для всех баз данных

  • Специфичные для СУБД векторные маппинги, фолбэки и ограничения

  • Кросс-базовая поддержка векторных индексов

  • Высокоуровневые API для векторного поиска и запросов подобия

  • Расширяемая архитектура для будущих AI-функций и возможностей поиска

  • Чёткая документация и примеры

Сложность

Средняя — Ожидаемое время: 175 часов

Необходимые навыки

Диалекты SQL, внутреннее устройство СУБД, архитектура драйверов TypeORM, стратегии индексирования, оптимизация запросов, проектирование API


Модуляризация API для определения сущностей

Менторы

Описание

TypeORM в настоящее время поддерживает два подхода к определению сущностей: классы с декораторами и схемы сущностей. Со временем эти подходы разошлись в реализации, причём поддержка схем сущностей часто отстаёт от классового подхода по функциональности и типобезопасности.

Цель проекта — выделить и модуляризовать стили определения сущностей в более чёткие, изолированные компоненты, чтобы синхронизировать оба подхода и заложить основу для будущих архитектурных улучшений. Вместо полной реструктуризации monorepo проект сосредоточится на достижимом подмножестве задач.

Цели

  • Выделить логику определения сущностей в отдельные модули/пакеты

  • Добиться паритета между классовыми сущностями и схемами сущностей

  • Исследовать функциональный API для определения сущностей с сильной выводом типов

  • Устранить дублирование между разными стилями определения сущностей

  • Заложить основу для будущей модуляризации (CLI, логирование, кэширование)

Ожидаемые результаты

  • Синхронизация возможностей между схемами сущностей и классовым подходом

  • Чистые внутренние абстракции для метаданных сущностей

  • Улучшенный вывод типов для неклассовых определений сущностей

  • Чёткие границы для безопасного рефакторинга и будущей модуляризации

Сложность

Высокая - Ориентировочно 350 часов

Необходимые навыки

TypeScript, система метаданных TypeORM, проектирование API, рефакторинг больших кодовых баз


Абстракция SQL диалектов для разработки кастомных драйверов

Описание

Добавление и поддержка драйверов БД в TypeORM сейчас сложны из-за тесной связности с существующими реализациями. Введение чёткой абстракции SQL диалектов упростит поддержку новых баз данных и сократит дублирование кода.

Проект направлен на создание слоя SQL диалектов, инкапсулирующего специфичное для СУБД поведение, что упростит разработку новых драйверов и улучшит разделение ответственности.

Менторы

Цели

  • Спроектировать абстракцию SQL диалектов для специфичного поведения СУБД

  • Выделить общую логику генерации SQL из существующих драйверов

  • Определить чёткие точки расширения для реализации новых диалектов

  • Документировать процесс создания пользовательского драйвера с использованием системы диалектов

Ожидаемые результаты

  • Четко определенный интерфейс SQL-диалекта

  • Сокращение дублирования кода в существующих драйверах

  • Повышение сопровождаемости текущих драйверов

  • Понятный путь для создания драйверов СУБД силами сообщества

Сложность

Высокая - Ориентировочно 350 часов

Необходимые навыки

SQL-диалекты, внутреннее устройство СУБД, TypeScript, архитектура драйверов TypeORM


Открытый приём идей от сообщества

TypeORM приветствует предложения проектов для Google Summer of Code от участников и членов сообщества.

Если у вас есть опыт работы с TypeORM и вы выявили проблемные места, отсутствующие функции или возможности для улучшения архитектуры — мы призываем вас предложить идею для GSoC-проекта.

Предлагаемые идеи могут включать (но не ограничиваются):

  • Улучшения существующих драйверов или поддержки СУБД

  • Оптимизации производительности

  • Улучшения разработческого опыта и инструментов

  • Улучшения документации или инфраструктуры тестирования

  • Новые функциональные возможности

Предлагаемые идеи должны содержать:

  • Краткое описание проблемы

  • Ожидаемые результаты и область работ

  • Оценку сложности

  • Соответствующие технические области (TypeScript, SQL, драйверы и т.д.)

Идеи, предложенные сообществом, будут рассмотрены мейнтейнерами и могут быть добавлены в официальный список проектов GSoC.


Современные инструменты миграций и снимки схем

Описание

Текущий рабочий процесс миграций в TypeORM сосредоточен вокруг CLI, что может быть неудобным в TypeScript-проектах и ограничивает сложные сценарии использования. Кроме того, проекты с длинной историей миграций сталкиваются с медленной и подверженной ошибкам инициализацией баз данных при настройке новых окружений.

Этот проект направлен на модернизацию инструментов миграций TypeORM за счёт внедрения программного API для генерации миграций и опциональных снимков схемы. Вместе эти улучшения сделают генерацию миграций более гибкой и позволят быстрее инициализировать новые базы данных без применения всех исторических миграций.

Менторы

Цели

  • Предоставить программный API для генерации миграций без зависимости от CLI

  • Включить поддержку настраиваемых шаблонов миграций

  • Разработать механизм снимков схемы, представляющих итоговую структуру базы данных

  • Разрешить инициализацию новых баз данных с использованием снимков при сохранении истории миграций

  • Обеспечить совместимость с существующими рабочими процессами миграций

Ожидаемые результаты

  • Улучшенный опыт разработки для TypeScript и не-CLI сценариев

  • Более быстрая и надёжная настройка баз данных для крупных проектов

  • Более гибкая генерация миграций и работа с шаблонами

  • Чёткая документация и рекомендуемые паттерны использования

Сложность

Средняя – Ориентировочно 175 часов

Необходимые навыки

TypeScript, SQL, система миграций TypeORM, внутреннее устройство CLI, проектирование API и инструментов


Начало работы

Студентам, заинтересованным в участии в Google Summer of Code с TypeORM, рекомендуется начать взаимодействие заранее. Знакомство с кодом, рабочим процессом внесения изменений и практиками сообщества настоятельно рекомендуется перед подачей заявки.

Чтобы начать:

  • Присоединяйтесь к нашему дискорд-серверу.

  • Изучите CONTRIBUTING.md.

  • Исследуйте репозиторий и документацию TypeORM для понимания архитектуры и поддерживаемых СУБД.

  • Попробуйте исправить небольшую проблему или улучшить документацию, чтобы освоить процесс контрибьютинга.