🐘
goとpostgresqlの連携
まず
こちらの記事は私が足りていないと思う所を重点的に勉強する。
名付けて「onion7日間チャレンジ」のDay1になります。
Day2↓
onion7日間チャレンジについて
Day1なので、詳しい説明も...
このチャレンジは7日で7個のプロダクトを作るというチャレンジです。
それに加えて以下のような制約もあります。
- AIを使用してはならない
- zennの記事を書くところまでやる
- 一日15時間とし、日をまたいでも良し
- ただし、15時間を超えたら失敗!!
作ったもの
Day1ではpostgresqlや連携の部分が足りていないと感じていたので、
CLIで動かせる日記を作成しました。
作ったものの概要
CLI日記(標準入力から操作)
""で囲まれてる部分は自分で変えて入力してください
-
一行目(ユーザー)
- "username"(ユーザー作成していない人は作成される)
- delete "username"(ユーザーの削除)
-
二行目(操作選択)
- upsert(作成,更新)
- show(取得)
- delete(削除)
-
三行以降(操作)
- upsertの場合
- "2004-09-04" "誕生日"(日付,内容)
- 日付の更新はできません
- showの場合
- all(全て)
- "2004-09-04"(日付で検索)
- "誕生日"(内容で検索)
- deleteの場合
- "2004-09-04" (日付)
- upsertの場合
入力例
go run main.go
input UserOperation: onion0904
input operation: upsert
input date and content: 2025-05-30 徹夜した
学んだこと
postgresqlの起動方法
GUI
# imageのpull,containerのrun,初期設定
docker-compose.yml
http://localhost:8080にアクセスして、ログインする
ここでpostgresqlの操作ができます。
CLI
# imageのpull,containerのrun,初期設定
docker-compose.yml
# containerの状態を確認
docker ps
# psのCONTAINER IDを確認して実行
docker exec -it [container id] psql -U onion0904 -d db
postgresqlの書き方
調べながら、すらすら書けるようになった
tableについての認識
create tableは設計図であり、userはゼロ人
insertでprimary keyが重なった時に複数のuserやdiaryが作成される
中間テーブルの意味
今回は一人のuserに複数のdiary,一つのdiaryに一人のuserだから一対多
中間テーブルが必要になる時は多対多の時
一つのdiaryに複数のtag,一つのtagに複数の日記の時などに使用
一対一
一対多
多対多
Discussion