Задать вопрос
@uyshaaaaaa

Можно ли использовать drift для запросов к бд postgresql?

Я хочу добавить в своё flutter приложение postgreSQL, во всех туториалах люди используют синтаксис sqlite для запросов, но мне настолько привычно писать все запросы с использованием орм от drifta, что я не хочу все эти запросы сейчас переписывать, когда они уже написаны на drift
  • Вопрос задан
  • 283 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик + ИИ
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия DevOps-инженер + ИИ
    5 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 3
Можно ли использовать drift для запросов к бд postgresql?

Можно. Используйте.

https://pub.dev/packages/drift_postgres
https://drift.simonbinder.eu/platforms/postgres
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
есть drift_postgres — официальный пакет, добавляет PgDatabase (QueryExecutor под постгрес), запросы переписывать не надо. В build.yaml не забудь sql: dialects: [postgres], иначе кодоген всё ещё думает что sqlite. И отдельно: если это мобильный клиент, коннектиться напрямую к постгресу с флаттера — так себе идея, креды утекут в апк, разумнее через бэкенд. Из sqlite-специфичного не перенесли часть работы с датами и alterTable в миграциях.
Ответ написан
Комментировать
@ilya0890067
Да, можно. Причём сейчас у Drift есть отдельная реализация drift_postgres, которая позволяет использовать Drift непосредственно с PostgreSQL. Большую часть существующих запросов на Drift переписывать не придётся - Drift генерирует SQL под нужный диалект.

Например, зависимости:

dependencies:
  drift: ^2.34.3
  drift_postgres: ^1.3.1


А подключение выглядит примерно так:

final database = AppDatabase(
  PgDatabase(
    endpoint: PgEndpoint(
      host: 'localhost',
      database: 'mydb',
      username: 'postgres',
      password: 'password',
    ),
  ),
);


Также нужно указать PostgreSQL как SQL dialect в build.yaml:

targets:
  $default:
    builders:
      drift_dev:
        options:
          sql:
            dialects:
              - postgres


После этого твои обычные конструкции Drift вроде select(), insert(), update(), delete(), join и т.д. можно продолжать использовать.

Но есть нюанс: поддержка PostgreSQL в Drift пока новее и менее полно покрыта тестами, чем SQLite. Некоторые SQLite-специфичные возможности, особенно связанные с DateTime и миграциями, потребуют адаптации. Для PostgreSQL рекомендуется использовать его нативные типы вроде PgTypes.uuid, PgTypes.date, PgTypes.timestampWithTimezone и т.п.

То есть в твоей ситуации переходить с Drift на другой ORM только из-за PostgreSQL смысла нет. Если запросы уже написаны на Drift, логичнее подключить drift_postgres и проверить их совместимость с PostgreSQL.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы