Skip to content

Posts

Prisma

Prismaを使ってDB設計ってできるのかな、と思い調べてみた。 Prisma自体は、ORMということだけれど、スキーマファイルをもとにDBに対してマイグレーションで定義を反映できる。 モデル間の関連もスキーマファイルで表現できる。 でも、API側をOpenAPIやGraphQLで定義するとすると、似たよ Read more

GraphQL

API設計するのに、GraphQLの可能性はどうなのかと思ってちょっとググってみた。 個人的にはAmplifyを試していたときに良くわからなくて挫折した思い出がある。 なんとなく、参照系はGraphQLで柔軟性を持たせつつ、更新系は従来のリソース志向のAPIで使い分けるのはどうかなと思った。 Goでのサー Read more

データベース比較

昨日はコンテナ実行環境の比較、今日はマネージドDB(MySQL)を比較してみる。 Amazon RDS for MySQL (MySQLのためのマネージドリレーショナルデータベース) | AWS Cloud SQL for MySQL マネージドデータベース | Cloud SQL: リレーショナル データベース サービス | Google Cloud Azure Database for MySQL - マネージド MySQL データベース | Microsoft Azure リージョンは東京で、シングル構成の Read more

コンテナ実行環境比較

AWSとAzureとGCPで、コンテナ実行環境の比較をしてみたくなった。 GCPのCloud Run: コンテナを秒単位で本番環境にデプロイ | Google Cloudみたいなやつ。 AWSはAWS App Runner – フルマネージド型のコンテナアプリケーション - Amazon Web Services、AzureはAzure Container Apps | Microsoft Azureが比較対象となるか Read more

OpenAPI Generator

Generators Listを眺めていたら、mysql-schemaなんてのがあったので、試してみた。 $ wget https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml $ docker run --rm \ -v ${PWD}:/local openapitools/openapi-generator-cli generate \ -i /local/petstore.yaml \ -g mysql-schema \ -o /local/out $ ls -R out/ out/: Model README.md mysql_schema.sql out/Model: ApiResponse.sql Category.sql Order.sql Pet.sql Tag.sql User.sql out/mysql_schema.sqlにDDLが作成されていた。 out/Modelには、CRUD用SQLのテンプレートが作られていた。 pets Read more

PocketbaseのMigration

昨日、Migratinが用意されているのを知って、試してみたけれど思ったように動かず。 マイグレーションにしか使わないパッケージもいくつかimportが必要だし、明示的にmigrate upしないといけない。 であれば、普通にHTTP APIでCreate Collectionしても良いかなという気持ちになっ Read more

Goのエラー処理

fmt.Errorf("~~: %w", err)の書き方にルールあるのかな、と思って調べたら、先人の記事があった。 fmt.Errorfのメッセージについての調査と、linterとしての実装について | CyberAgent Developers Blog いつもその時の雰囲気で書いていたので、こういったルールで揃えられるのは良い。 もうひとつ、tem Read more

PocketbaseのCollections

コンテナで起動時にコレクションを作成したい時のやり方が見つからない。 MySQLとかだと、/docker-entrypoint-initdb.dにSQLを置いておけば実行してくれる、そういうやつ。 →DB migrations - Docs - PocketBase Pocketbaseの起動時に初期化するのではなく、利用するアプリ側でマイグレーションを実 Read more

Goのredirect

ログアウトの処理(GET /logout)実行後にトップページにリダイレクトしようとした。 http.Redirect(w, r, “/”, 301) おや?動作しない時がある。。 301だと、ブラウザはリダイレクト先を覚えて、次からはリダイレクト先を最初から叩くっぽい。 なので、302にしてあげないと思ったような動きにならない。 ところで、Goのhttpパッ Read more

Goのtemplateのinclude

テンプレートのincludeってどうやるんだっけ、と思って検索した。 Go の html/template でヘッダーやフッター等の共通化を実現する方法 · Yutaka 🍊 Kato なるほど、{{define "header"}}~{{end}}で定義して、{{template "header" .}}で呼び出すのか。