Как работать с базой Postgresql в Kotlin/Native?

Есть ли инструменты для работы с базой Postgresql из Kotlin/Native ?
Если мы захотим написать микросервис который будет напрямую взаимодействовать с базой данных, без зависимости JVM! Возможно ли это, есть ли какие-то инструменты/гайды ?
Мотивация простая, хочется получить компактный код с минимумом зависимостией, в идеале один бинарник на микросервис как в Golang.
P.S. Создатели Kotlin утверждают что он предназначен не только для Android, от этого и будет отталкиваться...
  • Вопрос задан
  • 1661 просмотр
Пригласить эксперта
Ответы на вопрос 2
Jacen11
@Jacen11
https://github.com/JetBrains/Exposed
посмотрите. Вроде вот эта либа у них для бд
Ответ написан
Комментировать
@svok
Kotlin - это действительно довольно универсальный язык, который применим во многих направлениях, не только в Android.
Что касается Postgres, конечно же есть множество ORM-ов. Среди них наиболее известные:

Однако, Native из них поддерживает только SqlDelight, другие два - исключительно JVM-ные проекты.
Но и с SqlDelight тоже не все так хорошо. Да, он мультиплатформенный проект, среди поддерживаемых им платформ есть и Native, включая Linux и MacOS. Только вот среди поддерживаемых БД в Native платформе перечислена только одна и это SQLite. Нативного драйвера для Postgres в официальной коробке не предусмотрено. Мантйенеры для этого предлагают использовать стороннюю библиотеку postgres-native-sqldelight.
По факту, Postgresql в мультиплатформенном режиме не работает в SqlDelight. По крайеней мере на текущий момент и в заявленном штатном режиме. В частности, генерация JVM-кода происходит в область commonMain и исправить это без багфиксов библиотеки невозможно.
Наверное, можно запустить Postgres в костыльном варианте, использовав заклинания с упоминанием какой-то матери. По крайней мере есть даже пара публикаций об успешном запуске postgres-native-sqldelight.

Если не брать ORM, то есть вот такой проект: https://github.com/moreirasantos/pgkn. Насколько он рабочий, пока сказать не могу, но вижу в нем поддержку linuxX64. Если же эта библиотека не подойдет, всегда остается в Kotlin Native использовать штатную библиотеку libpq
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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