Size: a a a

Scala User Group

2021 July 31

ΛВ

Λнтон Войцишевский... in Scala User Group
мирроры и прочее в скале3 не такие удобные
источник

λ

λoλdog in Scala User Group
затем, что кривая
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
для деривации микротупклассов сойдет
источник

AS

Alexey Shcherbakov in Scala User Group
Как написали кастомный Option [Option []] + chimney, патч он сам выводит, не обязательно писать логику руками https://scalalandio.github.io/chimney/patchers/getting-started.html, вполне такая схема работает. Но HKD выглядит интереснее https://www.youtube.com/watch?v=2aX6_5mTdkw&ab_channel=%D0%9A%D0%BE%D0%BC%D0%BF%D0%B0%D0%BD%D0%B8%D1%8FDINS
источник

Э

Эд in Scala User Group
Конечно, он же проще и достаточный
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Та разве проще?
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
у Олега нет времени
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
и не совсем понятно как это на всех делать
источник

ZM

ZLoyer Matveev in Scala User Group
а у тебя?
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
я не знаю, сужу только по тофу
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
я только что на серкамагнолию подписался уже, теперь нет
источник

IT

Igal Tabachnik in Scala User Group
Кстати кто нибудь использовал либу HKD от ребят из chimney? https://scalalandio.github.io/ocdquery/
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
о ней писал кто-то в блоге
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
человек из яндекса
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
маленький преобразователь
источник

IT

Igal Tabachnik in Scala User Group
Нашёл библиотечку OCDQuery с генерацией запросов на doobie по пользовательским моделям данных. Сама библиотека выглядит заброшенной, а вот в документации лежит сокровище — понятное описание проблематики и реализации паттерна Higher Kinded Data для моделей сущностей из БД.

https://scalalandio.github.io/ocdquery/#Initialidea

Проблема: часть колонок заполняются БД по заданным правилам (автоинкремент id, например). Соответственно, они присутствуют в модели, которая из базы читается, но бесполезны в той, которая в базу пишется. Ещё при накатывании миграций нужны не значения полей, а названия соответствующих колонок.

Можно решать это отдельными моделями на каждый вариант использования, можно накостылить null/Option на все колонки. А можно применить HKD.

Описываем кейс-класс, поля которого лежат в контейнерах, тип которых задаётся при создании. Под каждый способ использования модели задаётся комбинация контейнеров.

case class ColumnName(name: String)

type Id[A] = A // когда поле обязательно присутствует
type UnitF[A] = Unit // когда поле будет создано базой
type ColumnNameF[A] = ColumnName // для миграций

// F для пользовательских полей
// С для полей, управляемых базой
case class User[F[_], C[_]](id: C[String], name: F[String])

type UserSelect = User[Id, Id] // все поля будут присутствовать в модели
type UserInsert = User[Id, UnitF] // поля, управляемые базой, будут заполнены Unit
type UserColumns = User[ColumnNameF, ColumnNameF] // вместо всех полей будут экземпляры ColumnNames


Количество тайп-параметров и их комбинаций можно делать любое в зависимости от сценариев использования данных. Главное не получить комбинаторный взрыв :)
источник

EB

Eugene Bosiakov in Scala User Group
Пытаюсь собрать свой проект используя assembly - получаю Invalid signature file digest for Manifest main attributes. Я правильно понимаю, что причина в том, что в моих депенденси есть подписанные джарники? может быть кто-нибудь может кинуть ссылкой как такое починить?
источник

EB

Eugene Bosiakov in Scala User Group
угу, если сделать:
zip -d *.jar 'META-INF/.SF' 'META-INF/.RSA' 'META-INF/*SF'
то все заводится, осталось понять, как сказать ассембли их игнорить
источник

EB

Eugene Bosiakov in Scala User Group
невермайнд, раскурил
источник
2021 August 01

NV

Nikita Vilunov in Scala User Group
они не заменяют нормальную деривацию, а скорее являются чем-то среднем между рефлексией и нормальной деривацией
источник