はじめに
業務でGOのテストする際にgo-testfixturesライブラリに大変お世話になっています。このライブラリを使うと、yamlファイルからテスト用DBのデータを簡単に作ることができます。
詳しくはREADME.mdを読んで欲しいのですが、yamlファイルに下記のように書くだけ、DBのデータを追加することが可能です。
# comments.yml
- id: 1
post_id: 1
content: A comment...
author_name: John Doe
author_email: john@doe.com
created_at: 2020-12-31 23:59:59
updated_at: 2020-12-31 23:59:59
- id: 2
post_id: 2
content: Another comment...
author_name: John Doe
author_email: john@doe.com
created_at: 2020-12-31 23:59:59
updated_at: 2020-12-31 23:59:59
で、今回、DBのスキーマがarray型の時はどうやって書くねん??となったので、備忘録として残しておきます。
いきなり結論
- RAWを使う。
- SQLで{}で囲むと配列のリテラル表現となる。下記のようにRAW=とするのことで、rawのSQL文として配列をDBに直接登録できる
yaml
- id: 1
name_array: RAW='{tanaka, suzuki}'
- id: 2
name_array: RAW='{takahashi, chakuradokuro}'
余談
- RAWは便利でこれ以外にもめっちゃ使ってます。RAW=pgp_sym_encrypt()やらRAW=NOW()やら、何かと使う機会があるのでぜひ覚えてみてください。