firebase-data-connect
Firebase SQL Connect — официальный skill для создания и развёртывания бэкендов на PostgreSQL через Firebase Data Connect, которое в актуальном исходнике переименовано в Firebase SQL Connect. Workflow рассчитан на реляционные схемы, связи между таблицами, авторизованные GraphQL queries и mutations, realtime-обновления и генерацию type-safe SDK. Карточка сохраняет прежнее имя Firebase Data Connect, потому что исходник прямо указывает: инструкции и примеры с этим названием относятся к тому же SQL Connect продукту. Ожидаемая структура проекта находится под каталогом dataconnect. В ней есть dataconnect.yaml для конфигурации сервиса, schema/schema.gql для модели, connector/connector.yaml для connector и генерации SDK, а также queries.gql и mutations.gql. Файл seed_data.gql предназначен только для локальных прототипов и тестовых данных. Такое разделение помогает отличать схему и прикладные операции от локального наполнения; наличие seed_data.gql не является доказательством production-данных. Перед использованием операций нужно проверить два механизма. Во-первых, читается пользовательская GraphQL-схема и сгенерированные расширения в .dataconnect/schema/main/. Во-вторых, операции валидируются командой npx -y firebase-tools@latest dataconnect:compile. Источник требует читать связанные reference-файлы для каждого этапа, поэтому карточка не подменяет документацию по синтаксису. Она задаёт маршрут проверки, а конкретные поля и ограничения должны соответствовать реальной схеме. По умолчанию выбирается Native GraphQL. Он предназначен для обычного CRUD, фильтрации, сортировки и простых реляционных соединений, использует автогенерируемые поля и сохраняет type safety. Native SQL оставляется для явно запрошенных или действительно продвинутых случаев: расширения PostgreSQL вроде PostGIS, window functions, сложные агрегации и tuned subqueries. В этом режиме применяются _select, _selectFirst и _execute, а позиционные параметры должны быть строгими и передаваться как $1, $2. Skill отдельно предупреждает, что raw SQL обходит schema-enforced structures и теряет type safety. Проектирование начинается с schema/schema.gql: таблицы и связи задаются через GraphQL-описание, а детали @table, @col, @default, @ref, уникальных полей и индексов ищутся в reference/schema.md. Затем в connector описываются queries и mutations с фильтрами, пагинацией и авторизацией. Для прав доступа предусмотрены @auth с уровнями PUBLIC, USER и NO_ACCESS, а также @check и @redact для проверок и скрытия строк. Multi-step операции могут использовать @transaction и связывать ответы через response.<prevStep>. Для realtime источник указывает @refresh и CEL-условия, которые ограничивают триггеры обновления. После схемы и операций генерируется SDK через connector.yaml. Источник перечисляет JavaScript, Kotlin, Swift, Web TypeScript, Android, iOS, Admin Node.js и Flutter/Dart reference-пути. Базовая команда генерации — npx -y firebase-tools@latest dataconnect:sdk:generate. Для локальной разработки можно запустить только dataconnect emulator, положить прототипные данные в seed_data.gql, скомпилировать Data Connect и использовать сгенерированный SDK в приложении. Инициализация сервиса выполняется через firebase-tools init dataconnect после понимания идеи приложения и целевого проекта. В capability map отдельно вынесены vector search и full-text search, upsert, сложные условия _or/_and/_not, environment config, realtime subscriptions, Cloud Functions integration, data seeding и starter templates. Для публикации на Cloud SQL используется firebase-tools deploy --only dataconnect. Эти команды описывают workflow, но не подтверждают права, выбранный Firebase project, структуру данных или успешность будущего deployment. Skill не создаёт бизнес-схему без контекста, не заменяет ревью authorization и security rules, не гарантирует корректность индексов и не должен заставлять использовать Native SQL там, где достаточно типобезопасного GraphQL.
Для чего подходит
- Проектирование PostgreSQL-схемы
- Создание queries и mutations
- Генерация type-safe SDK
Установка
Сначала прочитайте SKILL.md и scripts в исходном репозитории. Затем выполните команду в каталоге проекта:
npx skills add https://github.com/firebase/agent-skills/tree/main/skills/firebase-data-connect-basics