Então, estou criando um aplicativo no qual tenho um back-end escrito em Rails e um cliente escrito em Vue com Amplify. Meu banco de dados é MySQL e estou usando o AWS AppSync com um GraphQL como fonte de dados (apontando para o meu banco de dados).
O AWS Amplify tem um quadro que me permite gerar os esquemas baseados nos nomes de tabelas e colunas com um comando simples: amplify api add-graphql-datasource
. Mas, como estou usando migrações do Rails, meu banco de dados está usando as convenções do Rails: tabelas pluralizadas com colunas revestidas por serpentes.
Agora, o problema disso é que os esquemas do GraphQL são feios e não usam as convenções corretas (nomes singulares para os tipos e entradas, com adereços revestidos com camelo). Exemplo:
Meu back-end possui a seguinte migração:
class CreatePosts < ActiveRecord::Migration[6.0]
def change
create_table :posts do |t|
t.belongs_to :site, null: false
t.string :title
t.string :url
t.text :body
t.timestamps
end
end
end
E o esquema gerado para isso é:
type posts {
id: Int!
site_id: Int!
title: String
url: String
body: String
created_at: AWSDateTime!
updated_at: AWSDateTime!
}
type Query {
getPosts(id: Int!): posts
listPostss: [posts]
// ...
}
schema {
query: Query
// ...
}
Sem mencionar isso:
input CreatepostsInput {
id: Int!
site_id: Int!
title: String
url: String
body: String
created_at: AWSDateTime!
updated_at: AWSDateTime!
}
Portanto, o AWS Amplify é novo, não é maduro como Rails e, além disso, não encontrei nenhum adaptador ou transformador para lidar com o problema no cliente ... minha esperança é encontrar uma maneira de lidar com isso no Rails.
Eu preciso ser capaz de mudar completamente as convenções do Rails sem quebrar nada: migrações, associações, como gerenciar associações (create_xxx, build_xxx).
Este aplicativo é realmente novo, para que eu possa recriar todas as migrações do zero.
obrigado
fonte