Entonces, estoy construyendo una aplicación donde tengo un backend escrito en Rails y un cliente escrito en Vue con Amplify. Mi base de datos es MySQL y estoy usando AWS AppSync con GraphQL como fuente de datos (apuntando a mi base de datos).
El AWS Amplify tiene un marco que me permite generar los esquemas basados en los nombres de tablas y columnas con un comando simple: amplify api add-graphql-datasource
. Pero debido a que estoy usando migraciones de rails, mi base de datos está usando convenciones de Rails: tablas pluralizadas con columnas en forma de serpiente.
Ahora, el problema con eso es que los esquemas de GraphQL son todos feos y no usan las convenciones correctas (nombres singulares para los tipos y entradas, con accesorios en camello). Ejemplo:
Mi backend tiene la siguiente migración:
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
Y el esquema generado para esto es:
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
// ...
}
Sin mencionar esto:
input CreatepostsInput {
id: Int!
site_id: Int!
title: String
url: String
body: String
created_at: AWSDateTime!
updated_at: AWSDateTime!
}
Entonces, AWS Amplify es nuevo, no es maduro como Rails, y además no encontré ningún adaptador o transformador para manejar el problema en el cliente ... mi esperanza es encontrar una manera de manejarlo en Rails.
Necesito poder cambiar por completo las convenciones de Rails sin romper nada: migraciones, asociaciones, cómo administrar asociaciones (create_xxx, build_xxx).
Esta aplicación es realmente nueva, por lo que puedo recrear todas las migraciones desde cero.
Gracias
fuente