したがって、私は、Railsで記述されたバックエンドと、Amplifyを使用してVueで記述されたクライアントがあるアプリを構築しています。私のデータベースはMySQLであり、データソースとしてGraphQLを使用してAWS AppSyncを使用しています(データベースをポイントしています)。
AWS Amplifyには、テーブル名と列に基づいて1つの簡単なコマンドでスキーマを生成できるフレームワークがありますamplify api add-graphql-datasource
。しかし、私はRailsマイグレーションを使用しているので、私のデータベースはRailsの規則を使用しています。
ここでの問題は、GraphQLスキーマがすべて醜く、正しい規則を使用していないことです(キャメルケースのプロップを使用した、タイプと入力の単一名)。例:
私のバックエンドには次の移行があります:
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
このために生成されるスキーマは次のとおりです。
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
// ...
}
これは言うまでもありません:
input CreatepostsInput {
id: Int!
site_id: Int!
title: String
url: String
body: String
created_at: AWSDateTime!
updated_at: AWSDateTime!
}
したがって、AWS Amplifyは新しく、Railsほど成熟しておらず、その上、クライアントで問題を処理するためのアダプターやトランスフォーマーが見つかりませんでした...私の希望は、Railsでそれを処理する方法を見つけることです。
移行、関連付け、関連付けの管理方法(create_xxx、build_xxx)など、何も壊さずにRailsの規則を完全に変更できる必要があります。
このアプリは本当に新しいので、すべての移行をゼロから再作成できます。
ありがとう