aws-recordいいですよね。
aws-recordでDynamoDBのmigrationを作成する際のグローバルセカンダリインデックスの登録方法がわからなかったので調べてみました。
(これに限らず、aws-recordのコードはコメントやサンプルが豊富で読みやすいです。)
以下のような感じで書きます。
class User
include Aws::Record
string_attr :name, hash_key: true
string_attr :keywords, range_key: true
string_attr :material
string_attr :recepe
string_attr :tips
date_attr :updated_at
global_secondary_index(
:gsi_keywords,
hash_key: :keywords,
range_key: :name,
projection: {
projection_type: 'ALL'
}
)
end
# create db
cfg = Aws::Record::TableConfig.define do |t|
t.model_class(User)
t.read_capacity_units(5)
t.write_capacity_units(2)
t.global_secondary_index(:gsi_keywords) do |i|
i.read_capacity_units(5)
i.write_capacity_units(2)
end
end
cfg.migrate!
この書き方はlib/aws-record/record/table_config.rbに記載されています。
テーブルのメタ情報を表示すると以下のようになります(伏せているところには実際のテーブル名が入ります)
今回はDynamoDBローカル で実行しましたが、実際のDynamoDBでも問題なく動くのではないでしょうか。
改めてよく調べたらドキュメントにしっかり載ってましたね TableConfig