Giter VIP home page Giter VIP logo

Comments (6)

maxpain avatar maxpain commented on May 10, 2024

Добавлю про переезд с jm на хазуру.
Виртуальные поля в jm были в виде указания sqlDeps, а graphql-tools позволяют сделать тоже самое с помощью передачи fragmentа в одной из схем, передаваемых в mergeSchemas. Также мы избавились от кучи аггрегаций, sql-запросы которых мы писали прямо в резолверах, эта функциональность из коробки есть в хазуре. В мутациях мы возвращали объекты с помощью jm resolvera, будто это обычный query, в случае с хазурой заменили это с помощью delegateToSchema

В jm нужно самому везде прописывать проверку на видимость полей определенному юзеру/роли. В хазуре же все из коробки с помощью permissions.

from conf-talks.

nodkz avatar nodkz commented on May 10, 2024

Hasura

а у тебя не возникало задачи скрыть поля типа "password" ?

Вот так можно для определенной роли настроить "видимость" полей
photo_2018-12-07_13-05-01

Если нужно поле показывать только для текущего юзера, нужно в pg создать view users_private. Куда поместить поля, которые нужно только для текущего юзера и/или админа показывать. Вот так можно настроить видимость сообщений для чата, если у него allow_read = true или если ты есть в chat_permissions
photo_2018-12-07_13-05-15

from conf-talks.

nodkz avatar nodkz commented on May 10, 2024

Призма редактирование полей

Преамбула

Грамотно алтернуть таблицу, а потом шаманить АПИ - хасура. С Призмой миграции на порядок опаснее, особенно через SDL.

Ответ от @uxname:

дополню свой ответ опять) в призме крайне офигенная система миграции, мне очень понравилась

Скринкаст изменений (6:42)
https://youtu.be/6v75XJtAhCs

Вопросы по изменению существующего поля (понятно что у них там мелки баг, но очень неприятный)

  1. Сейчас по ФАКТУ у тебя в базе удалилось поле аватар или там два поля теперь - аватар и фото?

Осталось одно поле, avatar переименовалось в photo

  1. Изменение типа поля как происходит? Например строка в число (и часть значений у тебя буквы, а другая часть записей с цифпвми в виде текста).

Если данные уже есть в бд (т.е. нарушается констрейнт) - то только через флаг --force, который удалит весь столбец, а если столбец пустой - то просто пересоздаст его (удалит и создаст новый, с новым типом)

Changes:
  User (Type)
  ~ Updated field `string_int`

3.1) Если поле уже существует в базе. К примеру я его как-то хитро через скрипты свои создал и заполнил числами. Как поведет себя призма когда при создании поля Int, наткнется на уже существующее поле Int.

3.2) Что сделает призма если поле Int уже есть, но оно ее просят создать поле String с тем же именем. Рыгнется или сконвернирует данные?

3.1, 3.2) Коротко: так лучше не делать, будет работать через раз, например если создать поле с другим типом - напишет что всё ок (на самом деле тип в бд останется старый), если после этого поменять тип на другой (через призму) - напишет что всё ок, а если после этого опять через призму поменять обратно на другой тип - ругнётся. Лучше в обход призмы в бд не лезть создавать что-нибудь, такие таблицы лучше создавать в отдельной schema в бд. Но если очень нужно - то в призме есть интроспекция бд в схему (т.е. в призму импортируется схема существующей бд)

from conf-talks.

Makazone avatar Makazone commented on May 10, 2024

Похожая дискуссия сейчас происходит на реддите, я линкану свой ответ про наш в SVI опыт работы с призмой.

from conf-talks.

nodkz avatar nodkz commented on May 10, 2024

Новый игрок в полку
https://www.graphile.org/postgraphile/

from conf-talks.

ivan-kleshnin avatar ivan-kleshnin commented on May 10, 2024

Попытался категоризировать современные инструменты и сервисы, связанные с GraphQL:

https://github.com/ivan-kleshnin/backends

from conf-talks.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.