牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

Firebase console で Firestore のインデックスを追加してしまってから firestore.indexes.json に書き出したい場合のメモ

追加済みのインデックス設定をローカルのjsonに書き出す

$ npx firebase firestore:indexes --project PROJECT_NAME > firestore.indexes.json
$ cat firestore.indexes.json
(...内容表示されるはず...)

追加済みのインデックス設定を表示

$ npx firebase firestore:indexes --project PROJECT_NAME

インデックスのみ更新(デプロイ)

$ npx firebase deploy --only firestore:indexes --project PROJECT_NAME

Firebase で Cloud Functions の環境変数を json ファイルから読み込んでセットするメモ

ひとつの階層にjsonから読み込んだ値を入れる方法

env.json の例

{
  "hoge": "abc",
  "fuga": "def"
}

--project は任意で)

$ npx firebase functions:config:set env="$(cat env.json)" --project stg
$ npx firebase functions:config:get --project stg
{
  "env" {
    "hoge": "abc",
    "fuga": "def"
  }
}

おまけ:環境変数を削除する方法

$ npx firebase functions:config:unset env --project stg
$ npx firebase functions:config:get --project stg
{}

階層なしのフラットな値をjsonから読み込んだ値を入れる方法

まず jq コマンドいれておく

env.json の例

{
  "hoge": "abc",
  "fuga": "def"
}

--project は任意で)

$ npx firebase functions:config:set $(jq -r 'to_entries[] | [.key, (.value | tojson)] | join("=")' < env.json) --project prd
$ npx firebase functions:config:get --project stg
{

  "hoge": "abc",
  "fuga": "def"
}

Django の annotate の集計で group by でハマったのでメモ

結果的に正解はこんな感じ

from django.db.models import Count
hoges = Hoge.objects.filter(fuga__regex='/mogera/[0-9]+/$').values('fuga').annotate(num_fuga=Count('fuga')).order_by('-num_fuga')
[hoge['num_fuga'] for hoge in hoges]

values 挟まない失敗パターン

.values() 挟まないと id で group by されちゃう

print(Hoge.objects.filter(fuga__regex='/mogera/[0-9]+/$').values('fuga').annotate(num_fuga=Count('fuga')).order_by('-num_fuga').query)
# -> SELECT `hoge`.`fuga`, COUNT(`hoge`.`fuga`) AS `num_fuga` FROM `hoge` WHERE `hoge`.`fuga` REGEXP BINARY /mogera/[0-9]+/$ GROUP BY `id`.`fuga` ORDER BY `num_fuga` DESC

links