Vì vậy, tôi đang xây dựng một ứng dụng mà tôi có phần phụ trợ được viết bằng Rails và một ứng dụng khách được viết bằng Vue với Amplify. Cơ sở dữ liệu của tôi là MySQL và tôi đang sử dụng AWS AppSync với GraphQL làm nguồn dữ liệu (trỏ đến cơ sở dữ liệu của tôi).
AWS Amplify có một khung cho phép tôi tạo các lược đồ dựa trên các tên bảng và cột bằng một lệnh đơn giản : amplify api add-graphql-datasource
. Nhưng bởi vì tôi đang sử dụng di chuyển đường ray, cơ sở dữ liệu của tôi đang sử dụng các quy ước Rails: các bảng số nhiều với các cột có vỏ rắn.
Bây giờ, vấn đề với đó là các lược đồ GraphQL đều xấu và không sử dụng các quy ước chính xác (tên số ít cho các loại và đầu vào, với các đạo cụ vỏ lạc đà). Thí dụ:
Phần cuối của tôi có phần di chuyển sau:
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
Và lược đồ được tạo cho điều này là:
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
// ...
}
Không đề cập đến điều này:
input CreatepostsInput {
id: Int!
site_id: Int!
title: String
url: String
body: String
created_at: AWSDateTime!
updated_at: AWSDateTime!
}
Vì vậy, AWS Amplify là mới, nó chưa trưởng thành như Rails, và trên hết tôi không tìm thấy bất kỳ bộ chuyển đổi hoặc biến áp nào để xử lý sự cố trong máy khách ... hy vọng của tôi là tìm cách xử lý nó trên Rails.
Tôi cần có thể thay đổi hoàn toàn các quy ước Rails mà không vi phạm bất cứ điều gì: di chuyển, liên kết, cách quản lý các hiệp hội (create_xxx, build_xxx).
Ứng dụng này thực sự mới, vì vậy tôi có thể tạo lại tất cả các lần di chuyển từ đầu.
Cảm ơn