Size: a a a

2020 April 05

P

Pavel in rust_offtopic
Stanislav Popov
чем бекендирами тогда заниматься вообще
бизнес-логику и апишки проектировать
источник

P

Pavel in rust_offtopic
но не писать бойлерплейт который может машина написать
источник

SP

Stanislav Popov in rust_offtopic
разные у нас миры
источник

SP

Stanislav Popov in rust_offtopic
я бы понаблюдал даже активно и участвуя с удовольствием как у вас что пишется
источник

SP

Stanislav Popov in rust_offtopic
а пока что это просто невообразимо
источник

PK

Pavel Kvasnikov in rust_offtopic
Я себе не представляю писать SQL для крудов, это просто как писать свою ОС ради личного блога
источник

SP

Stanislav Popov in rust_offtopic
и как же ты этого избежишь
источник

SP

Stanislav Popov in rust_offtopic
ну наверное как то избежишь да
источник

PK

Pavel Kvasnikov in rust_offtopic
ORM + тулза для миграция. Автогенерация типовых запросов.
источник

SP

Stanislav Popov in rust_offtopic
но как - мне решительно не понятно
источник

PK

Pavel Kvasnikov in rust_offtopic
Ты описываешь модель данных - таблицу и связи, опционально на уровне модели внутри языка констрейнты, сомнительная практика, но некоторым нравится. В итоге вместо килограммокого SQL ты пишешь
User.joins(Article.joins(Comment)).sort(Sort(User.id, Sort::DESC)).where(User.created_at(Less(Time::now)));
источник

SP

Stanislav Popov in rust_offtopic
так это и есть квери билдер але
источник

PK

Pavel Kvasnikov in rust_offtopic
В статически типизрованных языках это выглядит малость мусорно
источник

SP

Stanislav Popov in rust_offtopic
это как раз и зашквар
источник

SP

Stanislav Popov in rust_offtopic
а UserJoinsArticleJoinsCommentSortUserId - это пишет машина, идеал и свеорешнство. знай разницу
источник

PK

Pavel Kvasnikov in rust_offtopic
Это легко поддерживать, а аналогичный SQL где-то в строке с немалым шансом на SQL-injection это зашквар. Есть еще такой аргумент хоть и мифический - ты можешь сменить базу не меняя запросы.
источник

SP

Stanislav Popov in rust_offtopic
ну допустим базу ты сменить не можешь примерно на втором хелловорлде
источник

PK

Pavel Kvasnikov in rust_offtopic
Квири билдеры дают хоть немного защиты от ошибок, а SQL надо писать где-то в IDE для SQL с подсветкой синтаксиса иначе будешь тратить время на опечатки и мелкие ошибки, особенно если у тебя что-то более-менее большое
источник

SP

Stanislav Popov in rust_offtopic
моё творчество от безделья
def get_parents_list(clause) -> List[models.Category]:

   beginning_getter = models.Category.query.filter(clause).cte(name="parent_for", recursive=True)

   with_recursive = beginning_getter.union_all(
       models.Category.query.filter(models.Category.id == beginning_getter.c.parent_id)
   )

   return DBSession.query(models.Category).select_entity_from(with_recursive).all()
источник

SP

Stanislav Popov in rust_offtopic
я вообще уже выкладывал но чето реально так няшно вышло. я просто давненько чего то такого не писал
источник